默认情况下,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