Qt paintevent() not triggered
Qt paintevent() not triggered
每当调用repaint()
时,我都试图重新绘制小部件,但由于某些原因,它不会触发paintevent()
。例如,当我做这样的事情时:
mLCD = new LCDui();
mLCD->drawBlank();
构造函数对于LCDui类工作得很好,并绘制了一个黑色小部件,但当调用drawBlank()
方法时,小部件不会重新绘制。我错过了什么?谢谢你的帮助!以下是LCDui类和实现:
编辑
我已经把它缩小到小部件本身没有更新的事实。如果我做mLCD->show();此时会出现一个带有正确图像的新窗口,然后我可以正常使用它。但是,我想要更新的小部件没有更新。这个小部件被提升为LCDui类。
结束编辑
lcdui.cpp
#include "lcdui.h"
#include <QPainter>
#include <QPaintEvent>
#include <QRgb>
LCDui::LCDui(QWidget *parent) : QWidget(parent)
{
image = new QImage(320,240,QImage::Format_RGB32);
image->fill(qRgb(0,0,0));
}
LCDui::~LCDui()
{
delete image;
image = NULL;
}
void LCDui::paintEvent(QPaintEvent * /*event*/)
{
QPainter painter(this);
painter.drawImage(QPoint(0,0),*image);
}
void LCDui::drawBlank()
{
image->fill(qRgb(255,255,255));
this->repaint();
}
lcdui.h:
#ifndef LCDUI_H
#define LCDUI_H
#include <QWidget>
#include <QImage>
class LCDui : public QWidget
{
Q_OBJECT
public:
explicit LCDui(QWidget *parent = 0);
~LCDui();
void drawBlank();
protected:
virtual void paintEvent(QPaintEvent * /*event*/);
private:
QImage *image;
};
#endif // LCDUI_H
所以我犯了一个非常愚蠢的错误。我在设置UI后忘记放置上述功能。
ui->setupUi(this);
ui->LCD_widget->drawBlank();
效果好多了。谢谢大家的帮助!
我也遇到过类似的问题。
我手动添加了小部件,但没有调用我添加到布局的小部件的paintEvent方法。在我为添加的小部件设置了最小大小后,问题就解决了。
相关文章:
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- OpenCV Android C++ imwrite not found
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 使用单词"not"作为C ++类的名称会导致VS2019错误
- 错误"Could not find Boost"(缺少:上下文标头)
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- Is !NaN not a NaN?
- 为什么我会" void value not ignored as it ought to be"?
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- Directx 11 - CompileFromFile() is not compiling
- 方法错误"not all control paths return a value"和方法不返回值
- Centos7 g++ "to_string is not in a member of std"
- 将系数存储在头文件的数组中("does not name a type"错误)
- QGraphicsItems not showing up QGraphicsScene
- QComboBox not triggered
- QGraphicsItem setPos() not triggered
- Qt paintevent() not triggered