如何隐藏/删除"?" 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