我试图在基于QDialog的应用程序中使用'WhatsThis'功能,因此当用户单击标题栏中的小问号时,会出现一个'about'对话框。
默认情况下,单击该按钮不会执行任何操作,只需将鼠标光标更改为“Forbidden”光标:
基于a previous post,我重新实现了以下事件:
def event(self, event):
if event.type() == QtCore.QEvent.EnterWhatsThisMode:
print "Here is a useful message"
return True
return QtGui.QDialog.event(self, event)
虽然这会打印出所需的消息,但即使我在上面的事件函数中添加以下内容,我仍然会得到'Forbidden'光标:
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
这会暂时创建一个箭头,但当我将光标移到应用程序标题栏外的任何位置时,光标会再次变为Forbidden。这几乎就像是在某个地方打开一个需要执行的模态对话框。
如何阻止此禁止行为?
答案 0 :(得分:3)
在您的事件处理程序中插入对QWhatsThis.leaveWhatsThisMode()
的调用以退出“这是什么?”模式一进入。
def event(self, event):
if event.type() == QtCore.QEvent.EnterWhatsThisMode:
QtGui.QWhatsThis.leaveWhatsThisMode()
print "Here is a useful message"
return True
return QtGui.QDialog.event(self, event)