启用QWizard中的最大化按钮

时间:2015-02-04 10:57:13

标签: c++ qt qdialog

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

默认情况下,最大化按钮甚至不可见。我已将其设置为显示,使用:

auto flags = windowFlags();
flags ^= Qt::WindowContextHelpButtonHint;
flags |= Qt::WindowMinMaxButtonsHint;
setWindowFlags(flags);

但是,它显示已禁用(灰显,无响应)。

我该如何启用它?

4 个答案:

答案 0 :(得分:2)

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

setWindowFlags(Qt::Window);

答案 1 :(得分: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);
    }
};

答案 2 :(得分:2)

这对我有用:

setWindowFlags(windowFlags() | Qt::CustomizeWindowHint |
                               Qt::WindowMinimizeButtonHint |
                               Qt::WindowMaximizeButtonHint |
                               Qt::WindowCloseButtonHint);

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

答案 3 :(得分:0)

我有这个:

QWizard *wizard = new QWizard(this, Qt::CustomizeWindowHint | Qt::WindowMaximizeButtonHint | Qt::Window);
wizard->setSizeGripEnabled(true);

在我的开发盒上运行Windows 10,Qt 5.5.1,为我工作。

我的一个页面是一个很大的QTableWidget,它最终变成了某种类型的Excel表格(一个用于验证和编辑大量数据的大页面)。使窗口可调整大小,让用户在需要时最大化窗口,使其更容易使用,而不必在小对话框中不断滚动。

通常你会说:如果你需要这么大的窗口,它可能不应该出现在QWizard中。但在这种情况下,它确实是工作流程的中间部分。一个大的验证,编辑 - 如果需要并继续'因此,在之前停止QWizard然后必须在之后启动另一个之后会很奇怪。