正如標題所示,有沒有辦法讓一個禁用的小部件接收鼠標事件?Qt 4.4:禁用的小部件接收鼠標事件
我正在使用QWidget::setEnabled()
來更改窗口小部件的外觀,但我仍然希望接收它們的鼠標事件。在此先感謝:)
正如標題所示,有沒有辦法讓一個禁用的小部件接收鼠標事件?Qt 4.4:禁用的小部件接收鼠標事件
我正在使用QWidget::setEnabled()
來更改窗口小部件的外觀,但我仍然希望接收它們的鼠標事件。在此先感謝:)
您可以使用相關小部件上的事件過濾器來執行此操作。見QObject::eventFilter()。你的實現可能是這樣的:
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (ui->pushButton)
{
if (event->type() == QEvent::MouseButtonRelease)
{
qDebug() << "mouse button";
return true;
} else
{
return false;
}
} else
{
// pass the event on to the parent class
return QMainWindow::eventFilter(obj, event);
}
}
即使按鈕被禁用,這將工作。
您忘了提及您需要首先安裝installEventFilter()。 – Dainius
謝謝。包含的鏈接中的信息涵蓋了自發布以來便已崩潰。該鏈接現在可以正常運行並且具有該信息。 –
如果你只是想改變它們的外觀,但仍然使它們互動,我建議你使用替代方法而不是禁用小部件。根據定義,禁用的小部件旨在不具有交互性。 – Chris
是的,我覺得這種實現是不正確的。但是,它是更大系統的一部分,因此暫時必須以這種方式進行:( –