Ich habe nur die folgenden Codes auf QPushButton und auf QWidget getestet und ich habe mit unterschiedlichen Verhaltensweisen aufgetreten. Aber warum?Unerwartete Verhalten auf QWidget während der Ereignisfilterung
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->widget->setStyleSheet("background:blue;");
ui->pushButton->setStyleSheet("background:blue;");
ui->widget->installEventFilter(this);
ui->pushButton->installEventFilter(this);
...
}
bool MainWindow::eventFilter(QObject* watched, QEvent* event)
{
if (watched==ui->pushButton && event->type()==QEvent::Paint)
{
// Do nothing
return true;
}
else if (watched==ui->widget && event->type()==QEvent::Paint)
{
// Do nothing
return true;
}
else
return QMainWindow::eventFilter(watched, event);
}
Dann hat der Taster als normalerweise verschwunden, weil ich seine paintEventO mit event maskiert haben. Aber das Widget ist blau gefärbt. Warum Widget nicht verschwunden ist.
Aber der QPushButton ist von QWidget abgeleitet und es ist Arbeit, oder? –
Sie können den Wert der Eigenschaft 'autoFillBackground' für' QWidget' und 'QPushButton' überprüfen. –