void MainWindow::on_windowTopButton_clicked() { if (m_flags == NULL) { m_flags = windowFlags(); setWindowFlags(m_flags | Qt::WindowStaysOnTopHint); this->show(); } else { m_flags = NULL; setWindowFlags(m_flags); this->show(); } }
首先,在QT中对于窗口显示常用的有这么几个方法可以调用:
showFullScreen() // Qt全屏显示函数 showMaximized() // Qt最大化显示函数 showMinimized() // Qt最小化显示函数 resize(x, y) // Qt固定尺寸显示函数 setMaximumSize(w, h) // Qt设置最大尺寸函数 setMinimumSize(w, h) // Qt设置最小尺寸函数
但是 showFullScreen()
和 showNormal()
只对顶级窗口有效果,对子窗口无效。要将子窗口全屏显示可用以下方法:
setWindowFlags(Qt::Window)
将其类型提升为顶级窗口模式,然后调用 showFullScreen()
函数将子窗口全屏显示。setWindowFlags(Qt::subwindow)
将子窗口设置为非顶级窗口,再调用 showNormal()
还原子窗口显示。// 全屏显示: VideoWidget->setWindowFlags(Qt::Window); VideoWidget->showFullScreen(); // 退出全屏时: VideoWidget->setWindowFlags(Qt::SubWindow); VideoWidget->showNormal();
1、在 QDialog 中添加 "最大化" 和 "最小化"按钮
在使用 QDialog 时,默认情况下只有 “这是什么” 和 “关闭” 按钮,但是我们习惯有最大化和最小化按钮。这里介绍如何在该模式下如何设置。
this->setWindowFlags(Qt::Dialog | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
其中 WindowMinMaxButtonsHint
设置的就是最大和最小按钮,但是只这样设置,关闭按钮就不可用了,因此需要再添加 WindowCloseButtonHint
一项。
2、只禁止最大化按钮
this->setWindowFlags(windowFlags() &~ Qt::WindowMaximizeButtonHint);
Qt::WindowMaximizeButtonHint
为 WindowType
枚举变量,通过修改它可以选择禁止 "最小化" 或者 "关闭" 按钮。
this->setFixedSize(this->width(),this->height());
QApplication::desktop()->width(); QApplication::desktop()->height();
即得到屏幕分辨率,如 1024*768。