2013-03-05 108 views
0

這是Qt的另一個新手。Qwidget中的Qt :: Pixmap沒有顯示在MainWindow中

我需要做的是在MainWindow的中心有一個可滾動的區域,它顯示圖像,並允許用戶在圖像上繪畫。

既然不能直接添加的QPixmap到滾動區,我試圖創建的QWidget的一個子類,如下圖所示:

class Canvas: public QWidget 
{ 
public: 
    Canvas(){ 
    image = new QPixmap(480,320); 
    image->fill(Qt::red); 
    } 
    QPixmap *image; 
}; 

然後,我宣佈在頭文件帆布* C。

在實現中,我寫道:

canvas = new Canvas; 
    setCentralWidget(canvas); 

然而,顯然這不利於現身的QPixmap。我不知道該怎麼辦。

回答

1

您不需要爲此創建子類QWidget。 QPixmap不是一個小部件,所以它不會顯示在任何地方。您需要將您的像素圖添加一些小工具,這將工作:

在頭

:在CPP

QLabel* imageLabel; 

imageLabel = new QLabel(this); 
QPixmap image(480,320); 
image.fill(Qt::red); 
imageLabel->setPixmap(image); 
setCentralWidget(imageLabel); 
+0

的問題是,如果我做這種方式,可以我在QLabel上繪畫?通過在qlabel上繪畫,它是否直接更改相應的Pixmap? – user1819047 2013-03-06 04:52:06

+0

如果我想不斷更改Pixmap,該怎麼辦?所以每次我必須調用imageLabel-> setPixmap()函數? – user1819047 2013-03-06 05:00:12

+0

不,在這種情況下,我認爲最好不要使用QLabel。我的意思是,是的,你可以每次調用imageLabel-> setPixmap(),但是如果你持續這樣做,會影響性能。看看QGraphicsScene,QImage,QGraphicsView ... – 2013-03-06 16:17:27