自学QT之QWidget::paintEngine: Should no longer be called的解决办法
2016-01-28 20:50
886 查看
这个还是以前遇到的,今天突然想起来,就决定重现一下当初的错误,以及错误的代码。
报错是这个样子的:
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
其实这个原因很简单,来看看报错的代码:
报错是这个样子的:
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
其实这个原因很简单,来看看报错的代码:
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QPixmap> #include <QPainter> void MainWindow::paintEvent(QPaintEvent *e) { } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QPixmap pix; pix.load(":/new/prefix1/QT.png"); QPainter p(this); p.drawPixmap(100,100,100,100,pix); } MainWindow::~MainWindow() { delete ui; }而去掉这个错误,只需要这样:
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QPixmap> #include <QPainter> void MainWindow::paintEvent(QPaintEvent *e) { QPixmap pix; pix.load(":/new/prefix1/QT.png"); QPainter p(this); p.drawPixmap(100,100,100,100,pix); } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; }画图这类事情要放到paintevent函数里面去做。这个具体的机制没研究,毕竟还是新手。但是根据经验判断,在窗口画图都要在事件里做。这个报错也很明显,就是说已经调用了,不能再调用了。巴拉巴拉。自己也乱了……总之找到方法就好了。
相关文章推荐
- PyQt学习笔记02-drag & drop
- 自学QT之QMovie播放gif(播放、暂停和继续)
- QT5+OpenCV美白效果
- Qt之进程间通信(QProcess)
- Qt之进程间通信(QProcess)
- Qt5.4.1编译QtCharts 2.1
- QT5+OpenCV磨皮效果
- 转《Qt教程一 —— 第六章:组装丰富的积木!》
- 转《Qt教程一 —— 第五章:组装积木》
- 转《Qt教程一 —— 第四章:使用窗口部件》
- 转《Qt教程一 —— 第三章:家庭价值》
- 最新的QT git代码到code.qt.io/cgit,还有planet.qt.io有许多博客
- 【QTP】自动化测试:
- QT5+OpenCV团块运动检测
- Qt5.5连接mysql数据库提示QMYSQL driver not loaded
- QT Creator 如何将第三方库加入到环境内
- QT5+OpenCV人脸识别
- QT5+OpenCV人脸、人眼检测
- 编译VTK时Qt5_DIR-NOTFOUND的解决方法
- QT 主要类使用方法