2013-03-05 132 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