默認情況下,QDialog
窗口的右上角有一個問號按鈕。當我按下它時,鼠標光標變爲「禁止」遊標,似乎沒有其他事情發生。QDialog:如何使用問號(?)按鈕?
雖然有很多來自那些誰想要生成的信息刪除問號(atleastthree SO線程專門的話題),the documentation聲明QDialog沒有關於如何實際使用任何事情。
如何讓我的應用程序在單擊問號時顯示信息?例如,如何從按鈕獲得clicked
信號?更好的是,這個按鈕在哪裏記錄?
默認情況下,QDialog
窗口的右上角有一個問號按鈕。當我按下它時,鼠標光標變爲「禁止」遊標,似乎沒有其他事情發生。QDialog:如何使用問號(?)按鈕?
雖然有很多來自那些誰想要生成的信息刪除問號(atleastthree SO線程專門的話題),the documentation聲明QDialog沒有關於如何實際使用任何事情。
如何讓我的應用程序在單擊問號時顯示信息?例如,如何從按鈕獲得clicked
信號?更好的是,這個按鈕在哪裏記錄?
這不是Qt記錄的按鈕。您可以通過捕獲事件並檢查事件類型檢測這樣的:
http://qt-project.org/doc/qt-5/qevent.html#Type-enum
有不同的類型爲QEvent::EnterWhatsThisMode
QEvent::WhatsThisClicked
等。我實現了類似於你在mainwindow中使用事件過濾器的東西。
if(event->type() == QEvent::EnterWhatsThisMode)
qDebug() << "click";
當我點擊?
按鈕時,我看到「點擊」。
基於切爾諾貝利的答案,這是我做到了在Python(PySide):
def event(self, event):
if event.type() == QtCore.QEvent.EnterWhatsThisMode:
print "click"
return True
return QtGui.QDialog.event(self, event)
也就是說,要重新實現event
當應用程序進入 'WhatsThisMode'。否則,將控制權交還給基類。
它幾乎可以工作。唯一的缺點是鼠標光標仍然變成'禁止'形狀。在前面的打印命令前右
QtGui.QWhatsThis.leaveWhatsThisMode()
由於線路:基於another post,我被添加擺脫這一點。
@Chrnobyl cool ...現在我需要弄清楚如何阻止它顯示'Forbidden'鼠標光標形狀 - 使它看起來像錯誤按下按鈕(非常奇怪的默認行爲,IMO)。 – neuronet
@neuronet'Forbidden'鼠標光標應該放在每個不支持whatsThis的部件上,所以這是正常的,還是我誤解了你? – Chernobyl
即使在重新實現事件之後,禁止遊標仍然被鎖定。即使當我向事件處理程序中添加'QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))'時,它也是類似的:暫時顯示爲箭頭,但當光標離開標題欄時,禁止遊標返回。我打算問這個問題作爲一個單獨的問題... – neuronet