记录一个问题:
在这里插入图片描述
在这里插入图片描述

我重写了一个类myslider继承自QSlider,然后重写了paintEvent(QPaintEvent *)方法。
然后从工具栏拖一个QSlider工具到主界面上,名字为verticalSlider,然后将这个QSlider提升为自己的myslider
然后运行的时候发现不会执行myslider::paintEvent(QPaintEvent *)函数。也就是界面上不显示这个QSlider。

解决方案:
主界面构造函数中添加如下代码:

ui->verticalSlider->setParent(this);
ui->verticalSlider->show();
                                    本文实例为大家分享了Qt自定义控件实现简易仪表盘的具体代码,供大家参考,具体内容如下
Qt自定义控件12:简易仪表盘(根据liudianwu大神的界面自己写的代码,建议去学习刘大神,会受益良多的)
先看效果图:
思路:画270度的圆弧,圆弧根据占比分为两种颜色,根据占比在圆弧上画出一个圆球作为标志,然后就是刻度线和刻度值。刻度线是根据坐标系旋转画出,刻度值是根据角度求出x,y坐标值构造出一个矩形画出刻度值(不要用坐标系旋转画刻度值,那样刻度值的角度也会旋转,写出的字不是正的,效果不好)。最后就是在中心画value。
关键代码:
void CMPassrate5::paintEvent(QP
                                    基础概念:
paintEvent(QPaintEvent*)函数是QWidget中的虚函数,用于ui的绘制,会在多种情况下被其他函数自动调用,比如update()时。
运行时机:
一个重绘事件用来重绘一个部件的全部或者部分区域,下面几个原因的任意一个都会发生重绘事件:
(1)repaint()函数或者update()函数被调用;
(2)被隐藏的部件现在被重新显示自定义了一个Widget,重写父paintEvent事件,主界面调用,没什么问题啊,但是运行就是添加不上这个小控件,折腾一上午才发现问题。方法,所以它的默认大小可能是 0x0。方法,给出一个合适的默认大小,解决~添加到布局中,也无法正确显示。
                                    今天一个同学遇到了一个问题,是这样的:她写了一个继承QLabel的派生,重写了里面的paintEvent函数,创建对象并set了图片进去,编译没错,正常运行,结果就是那个label什么都没有显示出来.
  于是去查询Qt的事件机制,发现只要在在打印的地方加上qApp->processEvents()这一句或者QCoreApplication::instance()->processEvents();就可以发现原来阻塞打印的信...
                                    paintEvent无法绘制
使用QPlainTextEdit和QTextEdit重载paintEvent重新绘制时,出现了一下的报错
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
通过Google和百度,发现一堆都是别人抄的,通过观看别人开源的代码和官方的文档,试验后发现在paintEvent中只需要
	//添加这句话
                                    该示例演示了如何使用QBasicTimer和timerEvent对小部件进行动画处理和使用QFontMetrics确定屏幕上文本的大小。  QBasicTimer是计时器的低级。与QTimer不同,QBasicTimer不会从QObject继承。它不会在经过一定时间后发出timeout()信号,而是将QTimerEvent发送到我们选择的QObject。这使QBasicTimer成为Q...