我有一個簡單的QWidget
程序在兒童QWidget
內繪製橢圓的Qt/C++問題。Qt:在子窗口小部件上使用QPainter
該程序由以下組成:
(1)一種親QWidget
(2)的兒童QWidget
(用作繪圖表面爲橢圓形)
(3)繪製QPushButton
下面是代碼(QPushButton插槽和信號代碼爲簡單起見省略)的一部分
void Draw::paintEvent(QPaintEvent *event) {
QPainter painter;
painter.begin(child_Widget); //The line with the problem
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, 12, Qt::DashDotLine, Qt::RoundCap));
painter.setBrush(QBrush(Qt::green, Qt::SolidPattern));
painter.drawEllipse(50, 50, 100, 100);
painter.end();}
第2行painter.begin(child_Widget);
不做任何事情。該程序只在將第2行替換爲painter.begin(this);
,而是根據需要使用父代QWidget
而不是子代QWidget
來繪製橢圓。
P.S.我將child_Widget安置在GroupBox內,而GroupBox又位於QVBoxLayout
的內部。
有何建議?
謝謝。
linuxman,我該怎麼做到這一點?我最初在其自己的類中有一個子部件作爲在父部件類中實例化的渲染區域,但我最終將這兩部分合併爲一個類b/c,我需要渲染區域來訪問父部件類的成員,並且使用friend關鍵字不起作用。 另外還有另一個設備(除了QWidget),我可以使用QPainter繪製橢圓w/out? – 2009-10-30 01:43:29
通過繼承它並重新實現它的paintEvent()函數。 – linuxman 2009-10-30 01:57:23