我在Qt中遇到了Paintevent的问题。 Paintevent线程在启动时几乎使用了所有数量的CPU。
我的主要小部件的构造函数中的代码。
Display_dialog::Display_dialog(QWidget *parent):QDialog(parent),
ui(new Ui::Display_dialog)
{
ui->setupUi(this);
pRedraw_Timer = new QTimer(this);
connect( pRedraw_Timer, SIGNAL(timeout()), this, SLOT(update()));
pRedraw_Timer->start( 15 );
}
在我的痛苦中,
void MyDialog::paintEvent(QPaintEvent *event)
{
}
在Paintevent中什么都没有!!!但运行这段代码会消耗100%的CPU [CPU is Single core 1 Ghz Processor
]。
当我停止(pRedraw_Timer->stop()
)这个调用更新的pRedraw_Timer时,例如:点击按钮,使用率几乎立即降至1%或低于10%!!!!
我的要求是根据串口输入绘制图表。所以我需要使用更新不断更新视图。但是在绘图时,任何中断(高优先级)似乎都会干扰绘图,因为cpu会切换来处理中断。处理中断后,绘图恢复正常。我的问题是,即使它没有做任何事情,这个痛苦的线程如何以及为什么消耗100%的CPU。如何更改此方案?
编辑(对于kuba ober):还有其他一些功能和插槽。但除非我调用它或触发信号,否则不会调用任何内容。我什么都没做。在运行程序之后,它会占用所有cpu。请记住,只调用主对话框的构造函数。