• 6512阅读
  • 6回复

画图paintEvent(QPaintEvent *event)使用问题 [复制链接]

上一主题 下一主题
离线bilong
 
只看楼主 正序阅读 楼主  发表于: 2013-04-16
我用paintEvent(QPaintEvent *event)来画背景图却画不出来,请高手指点。
#include <QWidget>
#include <QtGui>

class MyFrame : public QWidget
{
public:
MyFrame();
void paintEvent(QPaintEvent *event);
};

#endif // MYFRAME_H

//myframe.cpp文件
#include "myframe.h"

MyFrame::MyFrame()
{
}

void MyFrame::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPixmap(0,0,400,700,QPixmap("images/frame.png"));
}

//main.cpp文件
#include <QApplication>
#include <QtGui>

#include "myframe.h"

int main(int argc, char *argv[])
{
QApplication app(argc,argv);

MyFrame *frame = new MyFrame;
frame->resize(400,700);
frame->show();

return app.exec();
}
离线彩阳

只看该作者 6楼 发表于: 2013-04-18
回 2楼(yanzh) 的帖子
只需要注意不要在外部调用paintEvent就行了,public和protected都可以。
上海Qt开发联盟,热忱地欢迎你的加入!
离线jdwx

只看该作者 5楼 发表于: 2013-04-18
回 4楼(bilong) 的帖子
void MyFrame::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPixmap pximap("images/frame.png");
qDebug() << pixmap.isNull();
painter.drawPixmap(0,0,400,700,);
}
看看是不是图片路径问题。
写代码的时候,图片路径是相对源码的路径,exe运行后图片路径是相对exe路径。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线bilong
只看该作者 4楼 发表于: 2013-04-18
确实画不出来的呢?奇怪!!!!!!
离线jdwx

只看该作者 3楼 发表于: 2013-04-17
引用第2楼yanzh于2013-04-17 08:47发表的  :
paintEvent应是protected不是public吧

只要没写错函数名字,public也是一样好用。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线yanzh

只看该作者 2楼 发表于: 2013-04-17
paintEvent应是protected不是public吧
离线jdwx

只看该作者 1楼 发表于: 2013-04-16
回 楼主(bilong) 的帖子
图片的路径问题。
建议使用资源文件。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个