我有一个基于QWizard构建的Windows应用程序(继承自QDialog)。它必须有一个工作最大化按钮。
默认情况下,最大化按钮甚至不可见。我已将其设置为显示,使用:
auto flags = windowFlags();
flags ^= Qt::WindowContextHelpButtonHint;
flags |= Qt::WindowMinMaxButtonsHint;
setWindowFlags(flags);
但是,它显示已禁用(灰显,无响应)。
我该如何启用它?
答案 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然后必须在之后启动另一个之后会很奇怪。