借鉴Qt ImageViewer示例

时间:2012-09-16 11:17:41

标签: qt drawing image-viewer paintevent

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

非常感谢您的帮助。

0 个答案:

没有答案