在 QWizard 中启用最大化按钮
Enable maximize button in QWizard
我有一个基于 QWizard(继承自 QDialog)的 Windows 应用程序。它必须有一个有效的最大化按钮。
默认情况下,最大化按钮甚至不可见。我已将其设置为显示,使用:
auto flags = windowFlags();
flags ^= Qt::WindowContextHelpButtonHint;
flags |= Qt::WindowMinMaxButtonsHint;
setWindowFlags(flags);
但是,它显示为禁用(变灰,无响应)。
如何启用它?
有人 here 说这解决了他的问题:
setWindowFlags(Qt::Window);
我相信您创建自己的对话框会获得更好的结果,但如果您真的想这样做,一种方法是使用 window 样式(仅限 Windows,不能跨平台) .
向导class示例:
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);
}
};
这对我有用:
setWindowFlags(windowFlags() | Qt::CustomizeWindowHint |
Qt::WindowMinimizeButtonHint |
Qt::WindowMaximizeButtonHint |
Qt::WindowCloseButtonHint);
根据 documentation,您必须使用 Qt::CustomizeWindowHint
才能更改 min/max 按钮上的个别提示。
我有这个:
QWizard *wizard = new QWizard(this, Qt::CustomizeWindowHint | Qt::WindowMaximizeButtonHint | Qt::Window);
wizard->setSizeGripEnabled(true);
运行 Windows 10 在我的开发箱上,Qt 5.5.1,为我工作。
我的一个页面是一个很大的 QTableWidget,它最终变成了某种 Excel sheet(一个用于验证和就地编辑大量数据的大页面)。使 window 可调整大小并让用户根据需要将其最大化,这样使用起来就容易得多,而不必在小对话框中不断滚动。
通常你会说:如果你需要这么大的 window,它可能不应该在 QWizard 中。但在这种情况下,它确实是工作流程的中间部分。一个很大的 'verify, edit-if-needed and continue' 页面,所以之前停止 QWizard 然后又不得不启动另一个页面或其他东西会很奇怪。
我有一个基于 QWizard(继承自 QDialog)的 Windows 应用程序。它必须有一个有效的最大化按钮。
默认情况下,最大化按钮甚至不可见。我已将其设置为显示,使用:
auto flags = windowFlags();
flags ^= Qt::WindowContextHelpButtonHint;
flags |= Qt::WindowMinMaxButtonsHint;
setWindowFlags(flags);
但是,它显示为禁用(变灰,无响应)。
如何启用它?
有人 here 说这解决了他的问题:
setWindowFlags(Qt::Window);
我相信您创建自己的对话框会获得更好的结果,但如果您真的想这样做,一种方法是使用 window 样式(仅限 Windows,不能跨平台) .
向导class示例:
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);
}
};
这对我有用:
setWindowFlags(windowFlags() | Qt::CustomizeWindowHint |
Qt::WindowMinimizeButtonHint |
Qt::WindowMaximizeButtonHint |
Qt::WindowCloseButtonHint);
根据 documentation,您必须使用 Qt::CustomizeWindowHint
才能更改 min/max 按钮上的个别提示。
我有这个:
QWizard *wizard = new QWizard(this, Qt::CustomizeWindowHint | Qt::WindowMaximizeButtonHint | Qt::Window);
wizard->setSizeGripEnabled(true);
运行 Windows 10 在我的开发箱上,Qt 5.5.1,为我工作。
我的一个页面是一个很大的 QTableWidget,它最终变成了某种 Excel sheet(一个用于验证和就地编辑大量数据的大页面)。使 window 可调整大小并让用户根据需要将其最大化,这样使用起来就容易得多,而不必在小对话框中不断滚动。
通常你会说:如果你需要这么大的 window,它可能不应该在 QWizard 中。但在这种情况下,它确实是工作流程的中间部分。一个很大的 'verify, edit-if-needed and continue' 页面,所以之前停止 QWizard 然后又不得不启动另一个页面或其他东西会很奇怪。