Простой пример по отчиске background'a, при потери фокуса у виджета.
Имеется виджет, при потере фокуса, background сабжа не перерисовывается.
Соб-но пример:
Оригинал
Имеется виджет, при потере фокуса, background сабжа не перерисовывается.
Соб-но пример:
Оригинал
При потере фокуса(background) должен отчиститься.
Так как-же отследить событие потери фокуса?..
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
bool eventFilter(QObject *obj, QEvent *event); //Обработчик фильтра
};
//....
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);ui->treeWidget->installEventFilter(this); //Установим фильтр}
//Код хука фильтра
bool MainWindow::eventFilter(QObject *obj, QEvent *event){if(event->type() == QEvent::FocusOut) //нам нужно отследить событие потери фокуса{
ui->treeWidget->clearSelection(); //Очистим backgroundqDebug() << "Event!";}
}
Вот так можно фильтровать сообщения у определенных виджетов. Например события при вводе с клавиатуры, иногда требуется отследить именно событие и в зависимости от него произвести какое действие.