如何隐藏/删除"?" Qt对话框"标题栏"上的帮助按钮?

AMM*_*AMM 71 qt qt4 qdialog

我在我的一个应用程序中使用Qt Dialogs.我需要隐藏/删除帮助按钮.但我无法确定我的帮助按钮的确切位置.不确定它是否是Qt窗口上的特定标志.

amo*_*mos 62

默认情况下,Qt :: WindowContextHelpButtonHint标志被添加到对话框中.您可以使用对话框构造函数的WindowFlags参数来控制它.

例如,您可以通过执行以下操作仅指定TitleHintSystemMenu标志:

QDialog *d = new QDialog(0, Qt::WindowSystemMenuHint | Qt::WindowTitleHint);
d->exec();
Run Code Online (Sandbox Code Playgroud)

如果添加Qt :: WindowContextHelpButtonHint标志,则会返回帮助按钮.

在PyQt中你可以做到:

from PyQt4 import QtGui, QtCore
app = QtGui.QApplication([])
d = QtGui.QDialog(None, QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
d.exec_()
Run Code Online (Sandbox Code Playgroud)

有关窗口标志的更多详细信息,请参阅Qt文档中的WindowType枚举.

  • 请参阅下面的rrwick的回答.如果不将Qt :: WindowCloseButtonHint添加到标志中,则将禁用关闭按钮,默认情况下已启用该按钮. (6认同)
  • 如果要激活关闭按钮,还要添加标志`Qt :: WindowCloseButtonHint`. (4认同)
  • 我能够只设置“QtCore.Qt.WindowCloseButtonHint”并删除“QtCore.Qt.WindowTitleHint”。我假设设置标志会覆盖默认标志,因此您需要指定所需的所有标志。 (2认同)

Jen*_*och 40

// remove question mark from the title bar
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,因为它保留了之前设置的标志。 (2认同)
  • 如果你不喜欢摆弄:`setWindowFlags(windowFlags().setFlag(Qt::WindowContextHelpButtonHint, false))`,但这两个中哪一个更具可读性是相当主观的。 (2认同)

AMM*_*AMM 31

好的,我找到了一种方法来做到这一点.

它确实处理Window标志.所以这是我使用的代码:

Qt::WindowFlags flags = windowFlags()

Qt::WindowFlags helpFlag =
Qt::WindowContextHelpButtonHint;

flags = flags & (~helpFlag);   
setWindowFlags(flags);
Run Code Online (Sandbox Code Playgroud)

但通过这样做,有时会重置对话框的图标.因此,为了确保对话框的图标不会改变,您可以添加两行.

QIcon icon = windowIcon();

Qt::WindowFlags flags = windowFlags();

Qt::WindowFlags helpFlag =
Qt::WindowContextHelpButtonHint;

flags = flags & (~helpFlag);   

setWindowFlags(flags);

setWindowIcon(icon);
Run Code Online (Sandbox Code Playgroud)

  • 更短的版本:`setWindowFlags(windowFlags()&~Qt :: WindowContextHelpButtonHint);` (29认同)
  • @ThorbjørnLindeijer:您应该将此作为答案添加. (2认同)

Par*_*tes 18

从Qt 5.10开始,您可以使用单个QApplication属性全局禁用这些按钮!

QApplication::setAttribute(Qt::AA_DisableWindowContextHelpButton);
Run Code Online (Sandbox Code Playgroud)


rrw*_*ick 14

我在Windows 7,Qt 5.2中遇到过这个问题,并且最适合我的标志组合是这样的:

Qt :: WindowTitleHint | Qt的:: WindowCloseButtonHint

这给了我一个工作关闭按钮,但没有问号帮助按钮.只使用Qt :: WindowTitleHint或Qt :: WindowSystemMenuHint摆脱了帮助按钮,但它也禁用了关闭按钮.

正如迈克尔·毕晓普(Michael Bishop)建议的那样,它正在播放窗口标志示例,这使我成为了这种组合.谢谢!