QDialog:问号(?)按下时出现禁止光标

时间:2014-11-17 16:47:06

标签: qt pyqt pyside

我试图在基于QDialog的应用程序中使用'WhatsThis'功能,因此当用户单击标题栏中的小问号时,会出现一个'about'对话框。

默认情况下,单击该按钮不会执行任何操作,只需将鼠标光标更改为“Forbidden”光标:

You have entered the Forbidden Zone!

基于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。这几乎就像是在某个地方打开一个需要执行的模态对话框。

如何阻止此禁止行为?

1 个答案:

答案 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)