启用QWizard中的最大化按钮

Srv*_*v19 5 c++ qt qdialog

我有一个基于QWizard(继承自QDialog)的Windows应用程序.它必须有一个工作最大化按钮.

默认情况下,最大化按钮甚至不可见.我设置它显示,使用:

auto flags = windowFlags();
flags ^= Qt::WindowContextHelpButtonHint;
flags |= Qt::WindowMinMaxButtonsHint;
setWindowFlags(flags);
Run Code Online (Sandbox Code Playgroud)

但是,它显示为禁用(灰显,无响应).

我该如何启用它?

Lui*_*ira 7

这对我有用:

setWindowFlags(windowFlags() | Qt::CustomizeWindowHint |
                               Qt::WindowMinimizeButtonHint |
                               Qt::WindowMaximizeButtonHint |
                               Qt::WindowCloseButtonHint);
Run Code Online (Sandbox Code Playgroud)

根据文档,您必须使用Qt::CustomizeWindowHint才能更改最小/最大按钮上的各个提示。


小智 5

这里有人说这解决了他的问题:

setWindowFlags(Qt::Window);


Ant*_*ias 2

我相信创建自己的对话框会得到更好的结果,但如果您真的想这样做,一种方法是使用窗口样式(仅限 Windows,而不是跨平台)。

向导类示例:

class wizard : public QWizard
{
public:
    wizard() {}
    ~wizard() {}

protected:
    bool event(QEvent *event)
    {
#ifdef Q_OS_WIN /*Make this code Windows OS only*/
        if (event->type() == QEvent::WinIdChange)
        {
            HWND hwnd = (HWND)winId();
            LONG lStyle = GetWindowLong(hwnd, GWL_STYLE);
            lStyle |= (WS_MINIMIZEBOX | WS_MAXIMIZEBOX); /*Enable minimize and maximize*/
            SetWindowLong(hwnd, GWL_STYLE, lStyle);
        }
#endif

        return QWizard::event(event);
    }
};
Run Code Online (Sandbox Code Playgroud)