如何隐藏/删除"?" Qt对话框的"标题栏"上的帮助按钮?
时间:2020-03-05 18:58:27 来源:igfitidea点击:
我在我的一个应用程序中使用Qt对话框。
我需要隐藏/删除帮助按钮。但是我无法准确找到他的帮助按钮的位置。不知道它是否是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枚举中找到有关窗口标志的更多详细信息。
回答
好的,我找到了一种方法。
它确实处理窗口标志。所以这是我使用的代码:
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);
回答
这里列出的答案会起作用,但是要自己回答,我建议我们运行示例程序" $ QTDIR / examples / widgets / windowflags"。这将允许我们测试窗口标志的所有配置及其效果。对于解决松散的windowflags问题非常有用。
回答
我找不到插槽,但是我们可以覆盖虚拟的winEvent
函数。
#if defined(Q_WS_WIN) bool MyWizard::winEvent(MSG * msg, long * result) { switch (msg->message) { case WM_NCLBUTTONDOWN: if (msg->wParam == HTHELP) { } break; default: break; } return QWizard::winEvent(msg, result); } #endif