2010-08-11 114 views
5

我想在ui.goButton小部件上用Python模擬鼠標單擊事件。在PyQt中模擬鼠標點擊事件

這裏是我做過什麼:

QtTest.QTest.mouseClick(self.ui.goButton, QtCore.Qt.LeftButton) 

這是做正確的方式?因爲它不工作。

+0

我不認爲我明白你的意思是'模擬'?你想處理鼠標點擊事件還是你想生成一個鼠標點擊事件? – liaK 2010-08-11 14:09:14

+1

@liaK:我想要生成一個鼠標點擊事件,也就是說,我希望按鈕被髮送'SIGNAL(「clicked()」)',而用戶沒有真正點擊它。 – Vilfrin 2010-08-11 14:21:40

+0

您正在測試或者您想要以這種方式實際工作嗎? – 2010-08-11 17:29:53

回答

5

根據您對評論的回覆,我會回答您的問題。

基本上信號可以發出通過,

emit signalToBeEmitted() 

所以,如果你想發出QPushButtonclicked()信號,

你必須繼承QPushButton,你可以發出emit clicked()這樣的信號。

This example將幫助你發出信號。

但我的問題是爲什麼你想這樣做?

通過發射clicked()信號,你將依次調用connect ED插槽。所以你爲什麼不能自己改爲調用插槽直接發射信號,然後調用插槽..

還記得slots只是普通函數,它可以像其他函數一樣調用。

或者,如果您將通過信號連接的另一個物體中存在插槽,則會發出您自己的信號,而不是混淆預定義的信號。

恕我直言,不要發出這樣的預先定義的信號,即使是短期內 ..

希望它可以幫助..

編輯:

哎呀我沒有看到PyQt的。我習慣了Qt和C++。我對Python一無所知。但我相信Qt的大部分概念仍然是常見的。所以我會留下我的答案,因爲這樣..

+0

LiaK描述的行爲對於PySide也是有效的...... – 2014-01-17 00:38:51

+1

雖然這可能是答案中特定問題的正確答案,但我需要模擬真正的鼠標單擊事件,以便我可以將點擊傳遞給小部件鼠標在QStyledItemDelegate中。我在看着它的時候遇到了這個問題。我同意答案,但我認爲我的需求仍然是一個有效的用戶故事。這是值得加入這個答案IMO。這可能與使用構造的事件實例執行mousePressEvent一樣簡單,但我還不確定.... – Rafe 2017-05-07 01:05:28