0
Просто я протестировал следующие коды на QPushButton и QWidget, и я столкнулся с разными типами поведения. Но почему?Неожиданное поведение QWidget при фильтрации событий
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);
}
Затем КНОПКА исчез, как обычно, потому что я уже маскируется его paintEvent с eventFilter. Но виджет окрашен в синий цвет. Почему виджет не исчез.
Но QPushButton происходит от QWidget, и это работает, не так ли? –
Возможно, вы захотите проверить значение свойства 'autoFillBackground' для' QWidget' и 'QPushButton'. –