QT 窗口无法最大化

  • Post author:
  • Post category:其他



// Qt的主窗口没有最小化,最大化按钮且最大化显示


int main(int argc,char * argv [])


{


QApplication a(argc,argv);


TestQtForWinCE w;


w.setWindowFlags(w.windowFlags()&〜Qt :: WindowMaximizeButtonHint&〜Qt :: WindowMinimizeButtonHint);


w.showMaximized();


返回a.exec();


}


这里的“&〜”是取反以后再按位与的意思,下面的“|”是按位或的意思


//


同时禁止最大化最小化按钮


Qt的:: WindowMinMaxButtonsHint


//也禁止关闭


w.setWindowFlags(w.windowFlags()&〜(Qt :: WindowMinMaxButtonsHint | Qt :: WindowCloseButtonHint));


Qt的全屏显示函数




1,window.showFullScreen()//此方法只对顶级窗口有效,对子窗口无效




2,yourwidget-> setWindowFlags(Qt :: window | Qt :: FramelessWindowHint);




(第一个Qt的::窗口表示此插件是窗口类型,第二个参数使用无框架就是没有标题,状态栏和边框)


Qt最大化显示函数window.showMaximized()


Qt最小化显示函数window.showMinimized()


Qt固定尺寸显示函数window.resize(x,y)


子窗口全屏显示





QT中窗口部件QWidget成员函数showFullScreen();是用于将窗口部件全屏显示,但是他只对窗口模式的部件有用。子窗口的特征是Qt :: SubWindow,不是独立的窗口。因此对其调用showFullScreen ();通过对对象窗口调用:setWindowFlags(Qt :: Dialog);或setWindowFlags(Qt :: Window);将其设为窗口模式后,即可调用showFullScreen();进行全屏显示。



如果要还原为普通窗口,调用setWindowFlags(QT ::子窗口)将子窗口设置为非顶级窗口,再调用showNormal()还原子窗口显示。




参考











相对于子窗口的全屏显示方法,不得不提的是子窗口退出全屏的方法。





MFC中,子窗口退出全屏的方法简单直接,直接调用SetWindowPos()函数将子窗口显示到预定的位置即可。





QT中,直接使用移动​​和调整大小对窗口定位是没有效果的。需要先将子窗口设位非窗口模式。之后再将窗口移到理想位置。





即先调用setWindowFlags(QT ::对话框);或者setWindowFlags(QT ::子窗口);在调用移动和调整大小函数。





有人提到退出全屏时,调用showNormal(),再调setWindowFlags(QT ::子窗口)。





这有两个问题:1)showNormal()也是只对顶级窗口有效0.2)可以考虑先调用showNormal()将窗口设为原来大小,在将窗口设为子窗口模式但这样窗口回到父窗口。之中也不会显示原来的大小。




获取屏幕宽度和高度




QApplication :: desktop() – > width();



QApplication :: desktop() – > height();



即得到屏幕分辨率,如1024 * 768800 * 600。