我正在使用QLabel在Qt 5應用程序中繪製圖形。我安裝了一個事件過濾器,而不是繼承QLabel。事件過濾器確實被調用,並且QLabel內部的繪畫可以工作。問題是事件過濾器被遞歸調用,並且我的cpu達到100%的使用率。在QLabel中繪畫遞歸調用paintEvent
我在這裏做錯了什麼?
這裏是我的代碼:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->label->installEventFilter(this);
}
bool MainWindow::eventFilter(QObject *obj, QEvent *ev)
{
if ((obj == ui->label) && (ev->type() == QEvent::Paint))
{
QPixmap pix(50, 50);
pix.fill(Qt::blue);
ui->label->setPixmap(pix);
}
return false;
}
感謝您的幫助 尼莎·米勒
這是嚴重問的問題!你正在問如何解決某些神祕問題的不正確的解決方案,並且你甚至沒有給出你想要解決什麼樣的問題。 –
@MarekR爲什麼這個問題很嚴重? OP介紹了這個問題併發布了相關的代碼。 –
就像我寫的,你在問如何解決你沒有描述的一些問題的解決方案。我很確定你是否解釋了你想要實現哪種功能,結果會更簡單一些。 –