LINUX.ORG.RU

Добавил eventFilter пропала кнопка с формы

 


0

1

Вот такой код

MyWidget::MyWidget(QWidget* parent)
{
...
    m_button[2]->setGeometry(QRect(QPoint(50, 450), QSize(100, 50)));
    m_button[2]->installEventFilter(this);
...
}
bool MyWidget::eventFilter(QObject* watched, QEvent* event)
{
	if (watched == m_button[2])
	{
                if (event->type() == QEvent::MouseButtonPress)
		{
			/*Mouse down button event */
			qDebug() << tr("Monitor button event, button press event");
			return true;
		}
	}
}
Вот этот код ниже делает кнопку прозрачной, как вернуть?
	m_button[2]->installEventFilter(this);

Возможно следует вызывать watched->processEvent(event) в конце твоего фильтра. Возможно после клика мышкой летит event события перерисовки кнопки (анимация нажатия), но в твоём фильтре он никак не обрабатывается.

EXL ★★★★★
()

Во-первых, два ифа необязательны, можно объединить в одно условие:

if (watched == m_button[2] and event->type() == QEvent::MouseButtonPress)

Во-вторых, нужно вернуть false в остальных случаях.

fluorite ★★★★★
()
Ответ на: комментарий от fluorite
bool MyWidget::eventFilter(QObject* watched, QEvent* event)
{
	if (watched == m_button[2] and event->type() == QEvent::MouseButtonPress) 
	{
		/*Mouse down button event */
		qDebug() << tr("Monitor button event, button press event");
		return true;
	}
	return false;
}
fluorite ★★★★★
()
Ответ на: комментарий от bad_master

Из твоего кода это не видно. false в конце всё равно надо вернуть. Кроме того, watched и event желательно проверять на nullptr перед обращением.

fluorite ★★★★★
()
Ответ на: комментарий от fluorite

на том месте где кнопка ничего нет, реагирует код только из eventFilter, а clicked не реагирует

bad_master
() автор топика

bool MyWidget::eventFilter(QObject* watched, QEvent* event)

А внутри метода QWidget::eventFilter(watched, event) вызывается? Судя по документации, результат его выполнения и должен возвращаться в случаях, когда оно не заходит в твои условия.

s3rjke
()
Ответ на: комментарий от s3rjke

да оказывается что это важно и работает как надо теперь!

bad_master
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.