一、窗口置頂 與 取消置頂
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()
只對頂級窗口有效果,對子窗口無效。要將子窗口全屏顯示可用以下方法:
- 將要全屏的 Qt 子窗口調用
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。