我在我的一个应用程序中使用Qt Dialogs.我需要隐藏/删除帮助按钮.但我无法确定我的帮助按钮的确切位置.不确定它是否是Qt窗口上的特定标志.
默认情况下,Qt :: WindowContextHelpButtonHint标志被添加到对话框中.您可以使用对话框构造函数的WindowFlags参数来控制它.
例如,您可以通过执行以下操作仅指定TitleHint和SystemMenu标志:
QDialog *d = new QDialog(0, Qt::WindowSystemMenuHint | Qt::WindowTitleHint); d->exec();
如果添加Qt :: WindowContextHelpButtonHint标志,则会返回帮助按钮.
在PyQt中你可以做到:
from PyQt4 import QtGui, QtCore app = QtGui.QApplication([]) d = QtGui.QDialog(None, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint) d.exec_()
有关窗口标志的更多详细信息,请参阅Qt文档中的WindowType枚举.
// remove question mark from the title bar setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
好的,我找到了一种方法来做到这一点.
它确实处理Window标志.所以这是我使用的代码:
Qt::WindowFlags flags = windowFlags() Qt::WindowFlags helpFlag = Qt::WindowContextHelpButtonHint; flags = flags & (~helpFlag); setWindowFlags(flags);
但通过这样做,有时会重置对话框的图标.因此,为了确保对话框的图标不会改变,您可以添加两行.
QIcon icon = windowIcon(); Qt::WindowFlags flags = windowFlags(); Qt::WindowFlags helpFlag = Qt::WindowContextHelpButtonHint; flags = flags & (~helpFlag); setWindowFlags(flags); setWindowIcon(icon);
从Qt 5.10开始,您可以使用单个QApplication
属性全局禁用这些按钮!
QApplication::setAttribute(Qt::AA_DisableWindowContextHelpButton);
我在Windows 7,Qt 5.2中遇到过这个问题,并且最适合我的标志组合是这样的:
Qt :: WindowTitleHint | Qt的:: WindowCloseButtonHint
这给了我一个工作关闭按钮,但没有问号帮助按钮.只使用Qt :: WindowTitleHint或Qt :: WindowSystemMenuHint摆脱了帮助按钮,但它也禁用了关闭按钮.
正如迈克尔·毕晓普(Michael Bishop)建议的那样,它正在播放窗口标志示例,这使我成为了这种组合.谢谢!