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 には何もありません!!!しかし、このコードを実行すると、CPU が 100% 消費されます [ CPU is Single core 1 Ghz Processor
]。
そして、pRedraw_Timer->stop()
更新を呼び出すこの pRedraw_Timer を stop( ) すると、たとえば、ボタンをクリックすると、使用率がほぼ瞬時に 1% または 10% 未満になります!!!!
私の要件は、シリアル ポートからの入力に応じてグラフをプロットすることです。したがって、更新を使用してビューを常に更新する必要があります。ただし、プロット中に、CPUが割り込みを処理するために切り替わるため、割り込み(優先度が高い)がプロットを妨げているようです。割り込み処理後、作図は正常に戻ります。私の質問は、このペイントイベント スレッドがまったく何もしていないにもかかわらず、100% の CPU を消費する方法と理由です。このシナリオを変更するにはどうすればよいですか?
編集(kuba ober 用): 他にもいくつかの機能とスロットがあります。しかし、それを呼び出すか、シグナルをトリガーしない限り、何も呼び出されません。私はまったく何もしていません。プログラムを実行した直後に、すべての CPU を消費します。メインダイアログのコンストラクターのみが呼び出されることに注意してください。