Paintevent在Qt中消耗大量的CPU

时间:2012-06-26 13:06:39

标签: linux qt cpu-usage repaint qpainter

我在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。请记住,只调用主对话框的构造函数。

0 个答案:

没有答案