1

我是 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重叠线无关(或者只是不起作用)。

将不胜感激任何帮助。

4

0 回答 0