2016-07-01 16 views
0

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.

+0

Aber der QPushButton ist von QWidget abgeleitet und es ist Arbeit, oder? –

+0

Sie können den Wert der Eigenschaft 'autoFillBackground' für' QWidget' und 'QPushButton' überprüfen. –

Antwort