默认情况下,QDialog
窗口的右上角有一个问号按钮。当我按下它时,鼠标光标变为'Forbidden'光标,似乎没有其他任何事情发生。
虽然从那些想要删除问号的人那里产生了大量信息,但at least three SO线程专门用于该主题,QDialog的the documentation没有关于如何实际使用它的任何内容。
如何在点击问号时让我的应用程序显示信息?例如,如何从按钮获得clicked
信号?更好的是,这个按钮记录在哪里了?
答案 0 :(得分:8)
其他答案对我来说有点误导,只关注捕捉问号事件,但没有解释正常用法。
单击此按钮并触发 WhatsThisMode 时,对话框的元素应该提供有关自己的信息。如果鼠标悬停在支持此信息的元素上,则指针将变为带有问号的指向箭头(至少在Windows上),并在鼠标单击时显示工具提示消息。
以下是如何在PySide中实现它:
someWidget.setWhatsThis("Help on widget")
答案 1 :(得分:3)
这不是Qt记录的按钮。您可以通过捕获事件和检查事件类型来检测这一点:
http://qt-project.org/doc/qt-5/qevent.html#Type-enum
QEvent::EnterWhatsThisMode
QEvent::WhatsThisClicked
等不同类型。我在mainwindow中使用事件过滤器实现了类似于你想要的东西。
if(event->type() == QEvent::EnterWhatsThisMode)
qDebug() << "click";
当我点击?
按钮时,我看到了“点击”。
答案 2 :(得分:1)
根据切尔诺贝利的回答,这就是我在Python(PySide)中的表现:
def event(self, event):
if event.type() == QtCore.QEvent.EnterWhatsThisMode:
print "click"
return True
return QtGui.QDialog.event(self, event)
也就是说,当应用输入'WhatsThisMode'时,您重新实现event
。否则,将控制权传递回基类。
它几乎可以工作。唯一的缺点是鼠标光标仍然变成'禁止'形状。基于another post,我通过添加:
来摆脱它QtGui.QWhatsThis.leaveWhatsThisMode()
作为前一个打印命令之前的行。