QApplication的用法


QApplication的用法

來源 https://blog.csdn.net/qq_21342281/article/details/85322927

 

QApplication管理GUI程序的控制流和主要設置。

QApplication包含窗口系統和其他來源處理過和發送過的主事件循環。它也處理應用程序的初始化和收尾工作,並提供對話管理。QApplication可以對系統和應用的大部分設置項進行設置。

對於用Qt寫的任何一個GUI應用,不管這個應用有沒有窗口或多少個窗口,有且只有一個QApplication對象。

而對於用Qt寫的非GUI應用,則有且只有一個QCoreApplication對象,並且這個應用不依賴QtGui庫。

這個QApplication對象的指針可以通過instance()函數獲取,它和一個全局指針--qApp等價。

QApplication的主要功能是:

1、使用所在桌面的參數例如調色板(palette())、字體(font())、雙擊間隔(doubleClickInterval())等信息初始化應用程序。當我們改變桌面的一些設置時,可以讓應用程序的這些設置保持一致。

2、QApplication從底層窗口系統接收事件,並通過sendEvent()或postEvent()發送給需要的窗口。

3、通過解析命令行參數,來設置程序內部狀態。

4、在運行時,可以通過setStyle()函數來改變QApplication包含的一個QStyle對象,從而改變應用程序的外觀。

5、制定程序的顏色策略,詳見setColorSpec()函數說明。

6、通過translate()函數可以設置本地化的字符串。

7、QApplication還包含一些非常方便的類,例如屏幕信息類(desktop())和剪切板類(clipboard())。

8、QApplication包含所有窗口的信息,可以知道程序在屏幕上的位置(widgetAt()),頂層窗口列表(topLevelWidgets()),關閉所有窗口(closeAllWindows())等等。

9、QApplication能夠管理鼠標光標樣式。參照setOverrideCursor();

10、在Linux系統的中,它提供刷新和同步通訊流的函數,參看flushX()和syncX()。

11、QApplication提供全面的與用戶交互界面。當用戶注銷時,可以正常關閉;如果不能終止程序,它能取消關機進程;甚至可以保存程序全部狀態。參看 isSessionRestored(),sessionId() and commitData() and saveState()

 既然QApplication做了這么多初始化工作,因此它必須在創建其他與用戶界面相關的類之前創建。QApplication能夠處理命令行參數,所以在想要處理命令行參數之前就要創建它。

頭文件:#include<QApplication>

繼承自:QCoreApplication

一、公共函數

1、QApplication::QApplication(int & argc,char ** argv)

1.1、 使用在argv中包含的argc個命令行參數,初始化窗口系統及應用對象。

1.2、有一個全局的指針app指向應用對象(QApplication)。並且只能創建一個QApplication對象。

1.3、QApplication對象必須在繪制設備(設備包括窗口、像素映射、位圖等)之前創建。

1.4、Qt只將能夠識別的命令行參數,賦值給argv及argc。可識別的命令行參數如下:

1.5、Qt 命令行調試參數(如果Qt編譯時沒有加QT_DEBUG標記,則認為調試參數是無效的)

    -nograb:告訴Qt一定不會獲取鼠標和鍵盤事件;

    -dograb:忽略-nograb選項功能,不管-nograb選項是否存在命令行參數中;

    -sync:只有在X11系統下有效,調試時和調試服務器保持同步;

1.6、所有的Qt程序都支持如下的命令行參數:

    -style=風格:設置程序GUI風格。該值可以是關於主題、窗口等。如果你想在編譯Qt時使用風格或者額外的關於風格插件,這個參數可以幫你實現。

    -style 樣式:同上;

    -stylesheet = 樣式表:設置程序樣式表。這個參數必須是一個包含樣式表的文件;

         注意:該文件中樣式表的相對路徑是相對該文件的。

    -stylesheet 樣式表:同上;

    -session= 會話:從最近的會話中恢復程序。

    -session 會話:同上;

    -widgetcount:在程序崩潰時,打印崩潰前的幾個窗口信息和最后同時存在的窗口數量。

    -reverse:設置程序自動布局方向從右到左,對文字的處理方向從右到左;

    -graphicssystem:設置場景窗口和QPixmaps可用的后台支持,有效的參數是raster和opengl

    -gmljsdebugger=,通過設置特殊的端口號,激活QML/JS調試器,端口號格式為:1234[,塊],塊是可選的參數。同時使程序等待一個調試器來連接。

1.7、用於X11版本Qt的參數

     -display 顯示:設置X顯示,默認值是$DISPLAY

     -geometry 位置大小:設置第一個窗口顯示的位置。

    -fn 或者-font 字體:設置程序字體。該參數必須是系統能夠識別的。如果Qt程序配置了字體,該參數會被忽略;

    -bg或者-background 顏色:設置程序默認的背景色;

2、QApplication::QApplication(int & argc,char ** argv, bool GUIenabled)

 如果GUIenabled為true,將創建一個GUI程序,否則創建一個控制台程序(沒有用戶界面的程序);

在X11系統上,如果為false,程序將不會連接X服務器;

3、QApplication::QApplication(int & argc,char ** argvType type)

 enum QApplication::Type

Constant Value Description
QApplication::Tty 0 a console application控制台程序
QApplication::GuiClient 1 a GUI client application GUI客戶端程序
QApplication::GuiServer 2

a GUI server application (for Qt for Embedded Linux)

GUI服務器程序(用在嵌入式linux Qt) 和-qws作用相同

 4、QApplication::QApplication(Display * display,Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0)

     創建一個能夠在一個已經開始工作的顯示器上顯示的程序,只在X11系統上有效,並且真彩色位深大於8比特每像素。

5、QApplication::QApplication(Display * display,int & argc, char ** argv,Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0)

    同上;

6、QApplication::QApplication(QApplication::QS60MainApplicationFactory factory,int & argc, char ** argv)

 用於塞班系統

7、QApplication::~QApplication()

清理程序所有窗口分配的資源;設置全局指針qApp為0;

8、void QApplication::aboutQt()[static slot]  靜態槽函數

 顯示一個關於Qt版本等信息的消息對話框。

9、void QApplication::aboutToReleaseGpuResources() [signal]信號

 只用在塞班系統中,當程序釋放GPU資源時,觸發該信號。

10、void QApplication::aboutToUseGpuResources()  [signal]信號

只用在塞班系統中,當程序使用GPU資源時,觸發該信號。

11、QWidget * QApplication::activePopupWidget()     [static]靜態函數

      返回一個彈出窗口;彈出窗口是一個特殊的頂層窗口的(將窗口標志設置為Qt::WType_Popup)。當程序打開一個彈出窗口時,所有的事件都將發送給彈出窗口,其他窗口不能操作。

      如果已經有彈出窗口,再次彈出窗口時,這個窗口將被放入一個棧中,並返回棧頂的窗口。

12、QWidget * QApplication::activeModalWidget()  [static]靜態函數

     返回一個活動的模態窗口;模態窗口是一個特殊的頂層窗口,事件循環在模態窗口中,模態模式下不能操作其他窗口部件。

     所有的模態窗口被放入一個棧中,這個函數返回棧定的窗口。

13、QWidget * QApplication::activeWindow() [static]靜態函數

      返回一個有焦點的窗口頂層窗口,如果返回0,則代表應用程序沒有焦點。

14、void QApplication::alert(QWidget * widget,int msec = 0)

     向窗口發出警告,就像windows下任務欄中上的圖標閃現狀態。

15、QWidgetList QApplication::allWidgets()[static]靜態函數

       返回應用程序的所有窗口列表。

16、void QApplication::beep()    [static]靜態函數

      使用默認的音量和鈴聲,發出鈴聲。

17、void QApplication::changeOverrideCursor(constQCursor & cursor)  [static]靜態函數

     改變光標;使用該函數前必須先設置光標(setOverrideCursor)。

18、QClipboard * QApplication::clipboard()    [static]靜態函數

     返回一個只向全局粘貼板的指針。

19、void QApplication::closeAllWindows()   [static slot]靜態槽函數

     關閉所有頂層窗口;例如,文件菜單中的關閉按鈕就與該槽鏈接。窗口的關閉順序是隨機的。默認情況下程序會在所有窗口關閉后退出,除非設置quitOnLastWindowClosed為false;

20、int QApplication::colorSpec()    [static]靜態函數

      返回最多可用的顏色總數。參見QApplication::setColorSpec().

21、void QApplication::commitData(QSessionManager & manager)    [virtual]虛函數

     相關的QSessionManager希望應用保存所有數據。也就是,保存所有打開着的並且具有操作權限的文件。

22、 void QApplication::commitDataRequest(QSessionManager & manager)  [signal]信號

      當QSessionManager向讓程序保存數據時,發射該信號,當連接該信號時,應該使用 Qt::DirectConnection做為connect的第五個參數

 23、QDesktopWidget * QApplication::desktop()[static]靜態函數

      返回桌面信息QDesktopWidget。

24、bool QApplication::desktopSettingsAware()[static]靜態函數

      如果Qt使用系統標准顏色、字體則返回真,否則返回假

25、bool QApplication::event(QEvent * e)  [virtual protected]虛受保護函數

       QObject::event()的重新實現

26、int QApplication::exec()

      進入主循環,知道exit()被調用。

27、void QApplication::focusChanged(QWidget * old,QWidget * now)  [signal]信號

       焦點改變時,該信號出發。

28、QWidget * QApplication::focusWidget()  [static]靜態函數

       返回獲得焦點的窗口。

29、QFont QApplication::font()[static]靜態函數

       返回程序默認的字體

30、void QApplication::fontDatabaseChanged() [signal]信號

      當程序加載或刪除字體時,發送該信號

31、QFontMetrics QApplication::fontMetrics()[static]靜態函數

      返回應用程序字體規格(長寬間距等參數)。

32、QInputContext * QApplication::inputContext() const           [static]靜態函數

     返回應用程序的輸入法(軟件盤)QInputContext:通過模擬發送按鍵事件,實現與鍵盤輸入相同的效果。

33、bool QApplication::isEffectEnabled(Qt::UIEffect effect)  [static]靜態函數

        如果使用系統的設置(顏色字體等)則返回真,否則返回假。Qt::UIEffect :一個枚舉,描述可用的UI效果。

34、bool QApplication::isLeftToRight()[static]靜態函數

       是否從左到右布局。

35、bool QApplication::isRightToLeft()[static]靜態函數

      是否從右到左布局。

36、bool QApplication::isSessionRestored() const

      應用程序是否從最近一個會話中恢復。

37、Qt::KeyboardModifiers QApplication::keyboardModifiers()

      返回當前修飾鍵的狀態。

38、void QApplication::lastWindowClosed()[signal]信號

       當最后一個窗口關閉時,發送該信號。

39、Qt::MouseButtons QApplication::mouseButtons()

     返回當前鼠標按鍵

41、QCursor * QApplication::overrideCursor()[static]靜態函數

       返回光標

42、QPalette QApplication::palette()[static]靜態函數

       返回調色板

43、QPalette QApplication::palette(constQWidget * widget)[static]靜態函數

      返回窗口部件widget的調色板

44、Qt::KeyboardModifiers QApplication::queryKeyboardModifiers()

       返回當前修飾鍵的狀態。注意這是按鍵的實際狀態,與keyboardModifiers不同

45、void QApplication::restoreOverrideCursor()

     撤銷上一次setOverrideCursor()操作

46、void QApplication::setActiveWindow(QWidget * active)

      設置指定的窗口active為活動窗口,當不能使該窗口獲得鍵盤焦點,若想獲取鍵盤焦點可以使用QWidget::activateWindow()函數

47、void QApplication::setColorSpec(int spec)

    設置顏色規格。

48、void QApplication::setDesktopSettingsAware(bool on)

     是否使用系統標准設置參數,顏色字體等

49、void QApplication::setFont(constQFont & font, const char * className = 0)

    設置字體,如果className給出,將設置指定類className的字體

50、void QApplication::setGraphicsSystem(constQString & system)

     設置用於支持窗口部件和QPixmaps等圖像的后端處理,有效的參數:native(本地)、raster(柵格)、opengl(OpenGL)

     以下方法設置圖像后端,優先級從高到低:

     命令行:graphicssystem

     函數:QApplication::setGraphicsSystem

     環境變量:QT_GRAPHICSSYSTEM

     編譯配置configure:graphicssystem

51、void QApplication::setInputContext(QInputContext * inputContext)

    設置QInputContext

52、void QApplication::setOverrideCursor(constQCursor & cursor)

    設置光標

53、void QApplication::setPalette(constQPalette & palette, const char * className = 0)

    設置調色板

54、void QApplication::setStyle(QStyle * style)

    設置程序風格

55、void QApplication::syncX()

    在X11桌面系統中,同步X服務器

56、QWidget * QApplication::topLevelAt(constQPoint & point)

     返回指定位置的頂層窗口

57、QWidget * QApplication::topLevelAt(int x,int y)

    返回指定位置的頂層窗口

58、QWidgetList QApplication::topLevelWidgets()

    返回窗口列表

59、Type QApplication::type()

    返回程序類型:

QApplication::Tty 0 a console application控制台程序
QApplication::GuiClient 1 a GUI client application
QApplication::GuiServer 2 a GUI server application (for Qt for Embedded Linux)

60、QWidget * QApplication::widgetAt(constQPoint & point)

   返回指定位置的窗口部件

61、QWidget * QApplication::widgetAt(int x,int y)

   返回指定位置的窗口部件

    -fg或者-foreground 顏色:設置程序默認的前景色;

    -btn或者-button 顏色:設置默認的按鈕顏色;

    -name 名字:設置程序的名字;

    -title標題:設置程序的標題;

    -visual TrueColor:在8位顯示屏上強制使用真彩色;

    -ncols 數字:在8位顯示屏上,如果使用QApplication::ManyColor,則限制顏色的數量。如果參數為216,則使用6X6X6顏色體,其他值按2X3X1的比例使用;

    -cmap:讓程序在8位顯示屏上安裝定制色圖;

    -im:設置於服務器相關的輸入方法(相當於設置X調試器XMODIFIERS的環境變量)

    -inputstyle:輸入風格樣式

 

================= End

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM