Qwidget中的Qt::Pixmap不';我不能在主窗口中显示
这里是另一个新手Qt 我需要做的是在主窗口的中心有一个可滚动的区域,它显示图像,并允许用户在图像上绘制 由于我无法将QPixmap直接添加到可滚动区域,因此我尝试创建QWidget的子类,如下所示:Qwidget中的Qt::Pixmap不';我不能在主窗口中显示,qt,qwidget,qpixmap,Qt,Qwidget,Qpixmap,这里是另一个新手Qt 我需要做的是在主窗口的中心有一个可滚动的区域,它显示图像,并允许用户在图像上绘制 由于我无法将QPixmap直接添加到可滚动区域,因此我尝试创建QWidget的子类,如下所示: class Canvas: public QWidget { public: Canvas(){ image = new QPixmap(480,320); image->fill(Qt::red); } QPixmap *image; }; 然后我在
class Canvas: public QWidget
{
public:
Canvas(){
image = new QPixmap(480,320);
image->fill(Qt::red);
}
QPixmap *image;
};
然后我在头文件中声明了Canvas*c
在实现中,我写道:
canvas = new Canvas;
setCentralWidget(canvas);
但是,这显然无助于显示QPixmap。我不知道该怎么办 您不需要为此为QWidget子类化。QPixmap不是一个小部件,因此它不会显示在任何地方。您需要将您的pixmap添加到一些小部件中,这将起作用: 在标题中:
QLabel* imageLabel;
在cpp中:
imageLabel = new QLabel(this);
QPixmap image(480,320);
image.fill(Qt::red);
imageLabel->setPixmap(image);
setCentralWidget(imageLabel);
您不需要为此为QWidget创建子类。QPixmap不是一个小部件,因此它不会显示在任何地方。您需要将您的pixmap添加到一些小部件中,这将起作用: 在标题中:
QLabel* imageLabel;
在cpp中:
imageLabel = new QLabel(this);
QPixmap image(480,320);
image.fill(Qt::red);
imageLabel->setPixmap(image);
setCentralWidget(imageLabel);
问题是,如果我这样做,我可以在QLabel上画画吗?通过在qlabel上绘制,它是否会直接更改相应的Pixmap?如果我想连续更改Pixmap怎么办?所以每次我必须调用imageLabel->setPixmap()函数?不,在这种情况下,我认为最好不要使用QLabel。我的意思是,是的,您每次都可以调用imageLabel->setPixmap(),但如果您持续这样做,将对性能产生很大影响。看看QGraphicscene、QImage、QGraphicsView……问题是,如果我这样做,我可以在QLabel上画画吗?通过在qlabel上绘制,它是否会直接更改相应的Pixmap?如果我想连续更改Pixmap怎么办?所以每次我必须调用imageLabel->setPixmap()函数?不,在这种情况下,我认为最好不要使用QLabel。我的意思是,是的,您每次都可以调用imageLabel->setPixmap(),但如果您持续这样做,将对性能产生很大影响。看看QGraphicscene,QImage,QGraphicsView。。。