資源描述:
《Qt全屏顯示總結(jié)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、QT全屏顯示子窗口QT中全屏顯示子窗口的方法:QT中窗口部件QWidget成員函數(shù)showFullScreen();是用于將窗口部件全屏顯示,但是他只對(duì)窗口模式的部件有用。子窗口的特征是Qt::SubWindow,不是獨(dú)立的窗口。因此對(duì)其調(diào)用showFullScreen()無效。通過對(duì)子窗口調(diào)用:setWindowFlags(Qt::Dialog);或setWindowFlags(Qt::Window);將其設(shè)為窗口模式后,即可調(diào)用showFullScreen();進(jìn)行全屏顯示了。?相對(duì)于子窗口的全
2、屏顯示方法,不得不提的是子窗口退出全屏的方法。MFC中,子窗口退出全屏的方法簡(jiǎn)單直接,直接調(diào)用SetWindowPos()函數(shù)將子窗口顯示到預(yù)定的位置即可。QT中,直接使用move和resize對(duì)窗口定位是沒有效果的。需要先將子窗口設(shè)位非窗口模式。之后再將窗口移到理想位置。?即先調(diào)用setWindowFlags(Qt::Dialog);或者setWindowFlags(Qt::SubWindow);在調(diào)用move和resize函數(shù)。?有人提到退出全屏?xí)r,調(diào)用showNormal(),再調(diào)setWin
3、dowFlags(Qt::SubWindow)。這有兩個(gè)問題:1)showNormal()也是只對(duì)頂級(jí)窗口有效。2)可以考慮先調(diào)用showNormal()將窗口設(shè)為原來大小,在將窗口設(shè)為子窗口模式。但這樣窗口回到父窗口之中也不會(huì)顯示原來的大小。QT??如何使窗體初始最大化今天我想讓一個(gè)窗體初始運(yùn)行最大化,本以為很簡(jiǎn)單一個(gè)問題,花了差不多兩個(gè)小時(shí)才解決,真是痛苦,問題一但解決,其實(shí)非常簡(jiǎn)單QT中有一個(gè)void?QWidget::setWindowState?(?Qt::WindowStateswind
4、owState?)這樣的函數(shù),通過它可以設(shè)置窗體的初始狀態(tài),Qt::WindowStates一共有下面幾種狀態(tài):ConstantValueDescriptionQt::WindowNoState0x00000000Thewindowhasnostateset(innormalstate).Qt::WindowMinimized0x00000001Thewindowisminimized(i.e.iconified).Qt::WindowMaximized0x00000002Thewindowisma
5、ximizedwithaframearoundit.Qt::WindowFullScreen0x00000004Thewindowfillstheentirescreenwithoutanyframearoundit.Qt::WindowActive0x00000008Thewindowistheactivewindow,i.e.ithaskeyboardfocus.有了這個(gè)就非常easy了,想讓窗體最大化,只需要setWindowState(Qt::WindowMaximized);就行了?qml
6、中注冊(cè)和使用C++對(duì)象,以及在qml中實(shí)現(xiàn)窗體最大最小化在main函數(shù)中相關(guān)代碼如下:QApplicationapp(argc,argv);QDeclarativeViewview;//將app注冊(cè)到qml中,方便對(duì)主程序的退出,最大最小化等相關(guān)操作view.rootContext()->setContextProperty("WindowQuitControl",&app);view.rootContext()->setContextProperty("WindowControl",&view);
7、同時(shí)需要導(dǎo)入的文件頭:#include?這里將app和QDeclarativeView對(duì)象注冊(cè)到QML中,在QML中通過引用"WindowQuitControl"和"WindowControl"(接下來的qml文件中都會(huì)使用這兩個(gè)名字),就可以像在C++中使用app和view一樣!這里的view可以是QDeclarativeView,也可以是QmlApplicationViewer。如果用系統(tǒng)自動(dòng)生成的QtQuick應(yīng)用程序是后面這個(gè)對(duì)象,因?yàn)榇a有特殊需求
8、所以用了前面那個(gè)!1、之所以將app注冊(cè)到qml中,是因?yàn)镼DeclarativeView沒有quit()方法,所以如果在qml中使用Qt.quit()會(huì)提示signalquit沒有接受者,我的一個(gè)解決辦法就是將app注冊(cè)到qml中,通過在qml中使用://***.qml……MouseArea{onClicked:WindowQuitControl.quit();}……這樣就可以同樣退出程序。當(dāng)如如果想在退出程序之前做一些操作,可以講相關(guān)的類注冊(cè)到qml中,然后再相應(yīng)