我是Qt的新手,并开始根据qt提供的一个示例项目开发应用程序:“图像查看器”。
以下是考试项目本身:http://doc.qt.io/qt-4.8/qt-widgets-imageviewer-example.html
为了确保我没有做任何错误以扩展项目的功能,我创建了一个新项目并简单地从示例项目中复制了文件(请参阅"Image Viewer Example" page顶部的“文件”部分)
然后,我编辑了 imageviewer.h 文件:
添加了
#include <QPainter>
和
protected:
void paintEvent(QPaintEvent *);
到ImageViewer类。
然后我在 imageviewe.cpp 中定义了 paintEvent :
void ImageViewer::paintEvent(QPaintEvent * e)
{
QPainter p(this);
p.drawLine(0,0,100,100);
}
我希望在左上角绘制一条线,但它没有。
在我看来,重点是 scrollArea 与行重叠,使其“不可见”。所以,我注释了这一行
setCentralWidget(scrollArea);
在 ImageViewer :: ImageViewer()定义中。
这条线出现了,但没有显示图像。
然后我尝试使用 scrollArea 本身,更改 paintEvent 代码:
void ImageViewer::paintEvent(QPaintEvent * e)
{
QPainter p(scrollArea);
p.drawLine(0,0,100,100);
}
导致了
之类的消息QPainter :: begin:Paint device返回引擎== 0,输入:1
尝试使用Google搜索,但解决方案与 scrollArea 重叠线无关(或者只是不起作用)。
非常感谢您的帮助。