我有一个基于QWizard(继承自QDialog)的Windows应用程序.它必须有一个工作最大化按钮.
默认情况下,最大化按钮甚至不可见.我设置它显示,使用:
auto flags = windowFlags();
flags ^= Qt::WindowContextHelpButtonHint;
flags |= Qt::WindowMinMaxButtonsHint;
setWindowFlags(flags);
Run Code Online (Sandbox Code Playgroud)
但是,它显示为禁用(灰显,无响应).
我该如何启用它?
这对我有用:
setWindowFlags(windowFlags() | Qt::CustomizeWindowHint |
Qt::WindowMinimizeButtonHint |
Qt::WindowMaximizeButtonHint |
Qt::WindowCloseButtonHint);
Run Code Online (Sandbox Code Playgroud)
根据文档,您必须使用Qt::CustomizeWindowHint才能更改最小/最大按钮上的各个提示。
我相信创建自己的对话框会得到更好的结果,但如果您真的想这样做,一种方法是使用窗口样式(仅限 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)
| 归档时间: |
|
| 查看次数: |
2308 次 |
| 最近记录: |