我是 Qt 的新手,并开始基于 qt 提供的示例项目之一开发应用程序:“图像查看器”。
这是示例项目本身:http ://doc.qt.io/qt-4.8/qt-widgets-imageviewer-example.html
为了确保我没有做错任何事情来扩展项目的功能,我创建了一个新项目并简单地从示例项目中复制了文件(请参阅“图像查看器示例”页面顶部的“文件”部分)
然后,我编辑了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: 绘制设备返回引擎 == 0,类型:1
尝试用谷歌搜索它,但解决方案与scrollArea重叠线无关(或者只是不起作用)。
将不胜感激任何帮助。