Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QDialog:如何使用问号(?)按钮?_Qt_Pyqt_Pyside - Fatal编程技术网

Qt QDialog:如何使用问号(?)按钮?

Qt QDialog:如何使用问号(?)按钮?,qt,pyqt,pyside,Qt,Pyqt,Pyside,默认情况下,QDialogwindows在右上角有一个问号按钮。当我按下它时,鼠标光标变为“禁止”光标,并且似乎没有其他任何事情发生 虽然有很多信息是从那些想要删除问号的人那里生成的(因此线程专门用于这个主题),但是QDialog没有任何关于如何实际使用它的信息 单击问号时,如何让应用程序显示信息?例如,如何从按钮中获取单击的信号?更好的是,这个按钮记录在哪里?它不是Qt记录的按钮。您可以通过捕获事件并检查事件类型来检测此问题: 有不同的类型,如QEvent::EnterWhatsThisMo

默认情况下,
QDialog
windows在右上角有一个问号按钮。当我按下它时,鼠标光标变为“禁止”光标,并且似乎没有其他任何事情发生

虽然有很多信息是从那些想要删除问号的人那里生成的(因此线程专门用于这个主题),但是QDialog没有任何关于如何实际使用它的信息


单击问号时,如何让应用程序显示信息?例如,如何从按钮中获取单击的
信号?更好的是,这个按钮记录在哪里?

它不是Qt记录的按钮。您可以通过捕获事件并检查事件类型来检测此问题:

有不同的类型,如
QEvent::EnterWhatsThisMode
QEvent::WhatsThisClicked
等等。我在mainwindow中使用事件过滤器获得了类似于您想要的东西

if(event->type() == QEvent::EnterWhatsThisMode)
    qDebug() << "click";
if(事件->类型()==QEvent::EnterWhatsThisMode)

qDebug()根据切尔诺贝利的答案,我是这样用Python(PySide)实现的:

也就是说,当应用程序进入“WhatsThisMode”时,您将重新实现
事件。否则,将控件传递回基类

它几乎起作用了。唯一的问题是鼠标光标仍然会变成“禁止”形状。基于此,我通过添加以下内容来消除此问题:

QtGui.QWhatsThis.leaveWhatsThisMode()

正如前面的print命令前面的一行。

其他答案对我来说有点误导,只关注于捕捉问号事件,而没有解释正常用法

单击此按钮并触发WhatsThisMode时,对话框的元素应提供有关其自身的信息。如果鼠标悬停在支持此信息的元素上,则指针将变成带有问号的指向箭头(至少在Windows上),并在鼠标单击时显示工具提示消息

以下是如何在PySide中实现它:

someWidget.setWhatsThis("Help on widget")

QWhats此文档用于和,也可提供

@Chrnobyl cool…现在我需要弄清楚如何阻止它显示“禁止”鼠标光标形状——让它看起来像是错误按下了按钮(我认为这是非常奇怪的默认行为)。@neuronet“禁止”鼠标光标应该出现在每个不支持这一点的小部件上,所以这是正常的,还是我误解了你们?即使在我重新执行事件后,禁止光标仍然被锁定。即使我将
QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
添加到事件处理程序时也是类似的:临时显示为箭头,但当光标离开标题栏时,禁用的光标会返回。我打算把这个问题作为一个单独的问题来问……在这里问:这很好,你是对的。上面的答案集中在一个特殊的用法上,感谢你指出标准用法和文档!
someWidget.setWhatsThis("Help on widget")