2010-10-26 119 views
18

我有我自己的基於QWidget的類。我把這個小部件放在QMainWindow中,我需要用鼠標點擊這個小部件。qt QWidget點擊

我想:

connect(my_widget, SIGNAL(clicked()), this, SLOT(exit(0))); 

但什麼也沒有發生。我該怎麼做?

回答

26

QWidget沒有clicked()信號,而QMainWindow沒有exit()插槽。無法連接到未知信號和未知插槽。如果連接成功,則連接的返回值必須爲true。在進行連接時檢查此值以確保代碼正常工作。

要退出你的應用程序,你必須調用qApp->quit()

此外,因爲它已被其他人所說,你將不得不安裝一個eventFilter或重新實現

void QWidget::mousePressEvent (QMouseEvent * event) [virtual protected] 

void QWidget::mouseReleaseEvent (QMouseEvent * event) [virtual protected] 

方法。

在Qt的官方文檔中有很多例子,例如this重寫了mousePressEvent(QMouseEvent *event)方法。

對於eventFilter選項,請參閱this小示例。

希望這會有所幫助。

5

A QWidget沒有clicked信號。要做到這一點,請使用事件。所有部件支持的事件,所以有一些手工工作要做,但數量不多:

  1. 覆蓋的event功能,爲您的小部件(你獲得從QWidget
  2. 響應類型的事件QEvent:: MouseButtonPress

或者,添加一個eventFilter方法

谷歌我提到的代碼示例中的類和方法,並得到一個完整的解決方案,根據您的確切需要DS。