QT 子窗體 最大化 復原 遇到的問題
項目中有個需求,主窗體中嵌套子窗體,需要將子窗體最大化顯示和復原。
查了很多資料,基本上都是提到:QT中窗口部件QWidget成員函數showFullScreen();是用於將窗口部件全屏顯示,但是他只對窗口模式的部件有用。子窗口的特征是 Qt::SubWindow,不是獨立的窗口。因此對其調用showFullScreen()無效。通過對對子窗口調 用:setWindowFlags(Qt::Dialog);或setWindowFlags(Qt::Window);將其設為窗口模式后,即可調用 showFullScreen();進行全屏顯示了。
如果要還原為普通窗口,調用setWindowFlags(Qt::subwindow)將子窗口設置為非頂級窗口,再調用showNormal()還原子窗口顯示。
https://www.cnblogs.com/dyllove98/archive/2013/07/15/3191909.html
m_Win->setWindowFlags(Qt::Window);
m_Win->showFullScreen();
問題: 該方法確實可行,可以最大化,但是遇到一個問題,最大化后的界面部分操作和顯示不正確,例如有些線無法移動,button點擊沒有按下的效果。
解決辦法:設置windowstate為最大化
m_Win->setWindowFlags(Qt::Window);
m_Win->showFullScreen();
m_Win->setWindowState(Qt::WindowMaximized);