1. 程式人生 > >Qt開發:Qt Widgets模組——QApplication類

Qt開發:Qt Widgets模組——QApplication類

QApplication類管理GUI應用程式的控制流和主要設定。

標頭檔案:#include <QApplication> 

qmake:QT += widgets

繼承:QGuiApplication

QApplication專門為QGuiApplication提供基於QWidget的應用程式所需的一些功能。 它處理小部件特定的初始化,最終化。

對於任何使用Qt的GUI應用程式,只需一個QApplication物件,無論應用程式在任何給定時間是否有0,1,2或更多視窗。 對於基於非QWidget的Qt應用程式,請改用QGuiApplication,因為它不依賴於QtWidgets庫。

某些GUI應用程式提供特殊的批處理模式,即。 為執行任務提供命令列引數而無需手動干預。 在這種非GUI模式下,例項化簡單QCoreApplication通常就足以避免不必要地初始化圖形使用者介面所需的資源。 以下示例顯示如何動態建立適當型別的應用程式例項:

 QCoreApplication* createApplication(int &argc, char *argv[])
  {
      for (int i = 1; i < argc; ++i)
          if (!qstrcmp(argv[i], "-no-gui"))
              return new QCoreApplication(argc, argv);
      return new QApplication(argc, argv);
  }

  int main(int argc, char* argv[])
  {
      QScopedPointer<QCoreApplication> app(createApplication(argc, argv));

      if (qobject_cast<QApplication *>(app.data())) {
         // start GUI version...
      } else {
         // start non-GUI version...
      }

      return app->exec();
  }

QApplication物件可以通過instance()函式訪問,該函式返回一個相當於全域性qApp指標的指標。

QApplication的主要責任領域是:

1)、它使用使用者的桌面設定(如palette(),font()和doubleClickInterval())初始化應用程式。 它會跟蹤這些屬性,以防使用者在全域性範圍內更改桌面,例如通過某種控制面板。

2)、它執行事件處理,這意味著它從底層視窗系統接收事件並將它們分派到相關的小部件。 通過使用sendEvent()和postEvent(),您可以將自己的事件傳送到小部件。

3)、它解析常用命令列引數並相應地設定其內部狀態。 有關更多詳細資訊,請參閱下面的構造器文件

4)、它定義了應用程式的外觀和感覺,它被封裝在一個QStyle物件中。 這可以在執行時使用setStyle()進行更改。

5)、它指定應用程式如何分配顏色。 有關詳細資訊,請參閱setColorSpec()。

6)、它通過translate()提供使用者可見的字串本地化。

7)、它提供了一些神奇的物件,如桌面()和剪貼簿()。

8)、它知道應用程式的視窗。 您可以使用widgetAt()來查詢哪個小部件位於特定位置,並獲取topLevelWidgets()和closeAllWindows()等的列表

9)、它管理應用程式的滑鼠游標處理,請參閱setOverrideCursor()

由於QApplication物件執行了很多初始化,因此必須在建立與使用者介面相關的任何其他物件之前建立它。 QApplication還處理常見的命令列引數。 因此,在應用程式本身對argv進行任何解釋或修改之前建立它通常是一個好主意。

函式組;

系統設定desktopSettingsAware(), setDesktopSettingsAware(), cursorFlashTime(), setCursorFlashTime(), doubleClickInterval(), setDoubleClickInterval(), setKeyboardInputInterval(), wheelScrollLines(), setWheelScrollLines(), palette(), setPalette(), font(), setFont(), fontMetrics().
事件處理exec(), processEvents(), exit(), quit(). sendEvent(), postEvent(), sendPostedEvents(), removePostedEvents(), hasPendingEvents(), notify().
GUI樣式style(), setStyle().
顏色用法colorSpec(), setColorSpec().
文字處理installTranslator(), removeTranslator() translate().
小部件allWidgets(), topLevelWidgets(), desktop(), activePopupWidget(), activeModalWidget(), clipboard(), focusWidget(), activeWindow(), widgetAt().
高階游標處理overrideCursor(), setOverrideCursor(), restoreOverrideCursor().
雜項closeAllWindows(), startingUp(), closingDown().

一、成員型別

1、enum QApplication::ColorSpec

內容描述
QApplication::NormalColor0預設的顏色分配策略
QApplication::CustomColor1與X11的NormalColor相同; 在Windows下按需分配顏色到調色盤
QApplication::ManyColor2正確選擇使用數千種顏色的應用程式

二、屬性

1、autoMaximizeThreshold : int

該屬性為自動最大化小部件定義了一個閾值。

自動最大化閾值僅作為Windows CE的Qt的一部分提供。

此屬性為視窗大小定義了一個閾值,以螢幕大小的百分比表示。 如果視窗的最小大小提示超過了閾值,呼叫show()將使視窗自動最大化。

將閾值設定為100或更高意味著小部件將始終最大化。 或者,將閾值設定為50意味著只有垂直最小尺寸提示至少為垂直螢幕尺寸的50%時,才會最大化控制元件。

將閾值設定為-1會禁用該功能。

在Windows CE上,預設值為-1(即禁用)。 在Windows Mobile上,預設值是40。

這個屬性是在Qt 4.4中引入的。

訪問函式;

bool autoSipEnabled() const
void setAutoSipEnabled(const bool enabled)

int autoMaximizeThreshold() const
void setAutoMaximizeThreshold(const int threshold)

2、autoSipEnabled : bool

該屬性保持切換自動SIP(軟體輸入面板)可見性。

將此屬性設定為true以在輸入接受鍵盤輸入的小部件時自動顯示SIP。 此屬性僅影響設定了WA_InputMethodEnabled屬性的小部件,並且通常用於在具有非常少或沒有金鑰的裝置上啟動虛擬鍵盤。

該屬性僅對使用軟體輸入面板(如Windows CE)的平臺有影響。

預設值取決於平臺。

這個屬性是在Qt 4.5中引入的。

訪問函式;

bool autoSipEnabled() const
void setAutoSipEnabled(const bool enabled)

3、cursorFlashTime : int

該屬性儲存文字游標的閃爍(閃爍)時間,以毫秒為單位。

閃光時間是顯示,反轉和恢復插入符號顯示所需的時間。 通常情況下,文字游標顯示為游標閃爍時間的一半,然後隱藏相同的時間,但這可能會有所不同。

X11的預設值是1000毫秒。 在Windows上,使用控制面板值並設定此屬性為所有應用程式設定游標閃爍時間。

我們建議小部件不要快取該值,因為如果使用者更改全域性桌面設定,該值可能隨時發生變化。

注意:例如,如果游標閃爍被禁用,該屬性可能會保持負值。

訪問函式;

int cursorFlashTime()
void setCursorFlashTime(int)

4、doubleClickInterval : int

此屬性保留以毫秒為單位的時間限制,以區分雙擊和兩次連續滑鼠單擊。

X11的預設值是400毫秒。 在Windows和Mac OS上,使用作業系統的值。

訪問函式;

int doubleClickInterval()
void setDoubleClickInterval(int)

5、globalStrut : QSize

該屬性擁有使用者可以與之互動的任何GUI元素應具有的最小大小。

例如,不應將按鈕的大小調整為小於全域性支柱大小。 重新實現可能用於觸控式螢幕或類似I / O裝置的GUI控制元件時,應考慮支柱尺寸。

例如;

 QSize MyWidget::sizeHint() const
  {
      return QSize(80, 25).expandedTo(QApplication::globalStrut());
  }

預設情況下,此屬性包含寬度和高度均為零的QSize物件。

訪問函式;

QSize globalStrut()
void setGlobalStrut(const QSize &)

6、keyboardInputInterval : int

此屬性保持以毫秒為單位的時間限制,以區分一次按鍵和兩次連續按鍵。

X11的預設值是400毫秒。 在Windows和Mac OS上,使用作業系統的值。

該屬性在Qt 4.2中引入。

訪問函式;

int keyboardInputInterval()
void setKeyboardInputInterval(int)

7、startDragDistance : int

如果您支援拖放應用程式,並且想要在使用者按住某個按鈕將游標移動一定距離後開始拖放操作,則應該使用此屬性的值作為所需的最小距離。

例如,如果點選的滑鼠位置儲存在startPos中,並且當前位置(例如,在滑鼠移動事件中)是currentPos,則可以找出是否應使用如下程式碼開始拖動:

int main(int argc, char *argv[])
  {
      QApplication::setDesktopSettingsAware(false);
      QApplication app(argc, argv);
      ...
      return app.exec();
  }

Qt在內部使用這個值,例如 在QFileDialog中。

預設值(如果平臺不提供不同的預設值)是10個畫素。

訪問函式;

int startDragDistance()
void setStartDragDistance(int l)

8、startDragTime : int

此屬性保留以毫秒為單位的時間,即在開始拖放操作之前必須按住滑鼠按鈕。

如果您支援在應用程式中拖放,並且想要在使用者按住滑鼠按鈕一定時間後開始拖放操作,則應該使用此屬性的值作為延遲。

Qt也在內部使用這個延遲,例如 在QTextEdit和QLineEdit中,用於開始拖動。

預設值是500毫秒。

訪問函式;

int startDragTime()
void setStartDragTime(int ms)

9、styleSheet : QString

該屬性包含應用程式樣式表。

預設情況下,除非使用者在執行應用程式時在命令列上指定-stylesheet選項,否則此屬性將返回空字串。

該屬性在Qt 4.2中引入。

訪問函式;

QString styleSheet() const
void setStyleSheet(const QString &sheet)

10、wheelScrollLines : int

此屬性包含滾動滑鼠滾輪時滾動視窗小部件的行數。

如果該值超過小部件的可見行數,則小部件應該將滾動操作解釋為單頁向上或向下翻頁。 如果小部件是一個專案檢視類,那麼滾動一行的結果取決於小部件滾動模式的設定。 滾動一行可以表示滾動一個專案或滾動一個畫素。

預設情況下,此屬性的值為3。

訪問函式;

int wheelScrollLines()
void setWheelScrollLines(int)

11、windowIcon : QIcon

該屬性儲存預設的視窗圖示。

訪問函式;

QIcon windowIcon()
void setWindowIcon(const QIcon &icon)

三、成員函式

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

初始化視窗系統並使用argv中的argc命令列引數構造一個應用程式物件。

警告:由argc和argv引用的資料必須在QApplication物件的整個生命週期內保持有效。 另外,argc必須大於零,並且argv必須包含至少一個有效的字串。

全域性qApp指標指向這個應用程式物件。 應該只建立一個應用程式物件。

此應用程式物件必須在任何繪畫裝置(包括小部件,畫素圖,點陣圖等)之前構造。

注意:argc和argv可能會因Qt刪除它識別的命令列引數而發生更改。

所有Qt程式都自動支援以下命令列選項:

1)、-style = style,設定應用程式的GUI風格。 可能的值取決於您的系統配置。 如果您使用其他樣式編譯Qt或將其他樣式作為外掛進行編譯,這些將可用於-style命令列選項。 您還可以通過設定QT_STYLE_OVERRIDE環境變數來設定所有Qt應用程式的樣式。

2)、-style style,與上面列出的一樣。

3)、-stylesheet = stylesheet,設定應用程式樣式表。 該值必須是包含樣式表的檔案的路徑。

注意:樣式表文件中的相對URL與樣式表文件的路徑有關。

4)、-stylesheet stylesheet, 與上面列出的一樣。

5)、-widgetcount,在最後列印除錯訊息,其中包含未儲存的小部件數量以及同時存在的最大小部件數量

6)、-reverse,將應用程式的佈局方向設定為Qt :: RightToLeft

7)、-qmljsdebugger =,用指定的埠啟用QML / JS偵錯程式。 該值必須是格式port:1234 [,block],其中block是可選的,並會使應用程式等待,直到偵錯程式連線到該埠。

2、[virtual] QApplication::~QApplication()

清理此應用程式分配的任何視窗系統資源。 將全域性變數qApp設定為0。

3、[static slot] void QApplication::aboutQt()

顯示一個關於Qt的簡單訊息框。 該訊息包含應用程式正在使用的Qt的版本號。

這對於包含在應用程式的“幫助”選單中非常有用,如選單示例中所示。

此函式是QMessageBox :: aboutQt()的便捷插槽。

4、[static] QWidget *QApplication::activeModalWidget()

返回活動的模式小部件。

模式小部件是一個特殊的頂層小部件,它是QDialog的子類,它將建構函式的模態引數指定為true。 在使用者可以繼續使用該程式的其他部分之前,必須先關閉模式視窗小部件。

模態小部件被組織在一個堆疊中。 該函式返回堆疊頂部的活動模態小部件。

5、[static] QWidget *QApplication::activePopupWidget()

返回活動的彈出視窗部件。

彈出視窗小部件是設定Qt :: WType_Popup視窗小部件標誌的特殊頂級視窗小部件,例如, QMenu小部件。 當應用程式開啟一個彈出視窗小部件時,所有事件都被髮送到彈出視窗。 在關閉彈出視窗小部件之前,不能訪問普通視窗小部件和模式視窗小部件。

顯示彈出視窗小部件時,只有其他彈出視窗小部件可能會開啟。 彈出視窗小部件被組織在一個堆疊中。 該函式返回堆疊頂部的活動彈出視窗小部件。

6、[static] QWidget *QApplication::activeWindow()

返回具有鍵盤輸入焦點的應用程式頂層視窗,如果沒有應用程式視窗具有焦點,則返回0。 即使沒有focusWidget(),也可能有activeWindow(),例如,如果該視窗中沒有小部件接受關鍵事件。

7、[static] void QApplication::alert(QWidget *widget, int msec = 0)

如果視窗不是活動視窗,則會為視窗小部件顯示警報。 該警報顯示為毫秒毫秒。 如果msec為零(預設值),則警報將無限期顯示,直到視窗再次變為活動狀態。

目前這個功能在Qt for Embedded Linux上不做任何事情。

在OS X上,這在應用程式級更適用,並會導致應用程式圖示在底座中反彈。

在Windows上,這會導致視窗的工作列條目閃爍一段時間。 如果毫秒為零,閃爍將停止,工作列條目將變成不同的顏色(當前為橙色)。

在X11上,這會導致視窗被標記為“需要關注”,視窗不能被隱藏(即沒有對其呼叫hide(),而是以某種方式顯示),以使其工作。

8、[static] QWidgetList QApplication::allWidgets()

返回應用程式中所有小部件的列表。

如果沒有小部件,列表是空的(QList :: isEmpty())。

注意:一些小部件可能被隱藏。

例;

  void updateAllWidgets()
  {
      foreach (QWidget *widget, QApplication::allWidgets())
          widget->update();
  }

9、[static] void QApplication::beep()

使用預設的音量和聲音聽起來很響。 該功能在Qt for Embedded Linux中不可用。

10、[static slot] void QApplication::closeAllWindows()

關閉所有頂級視窗。

此功能對於具有許多頂級視窗的應用程式特別有用。 例如,它可以連線到檔案選單中的退出條目:

      const QIcon exitIcon = QIcon::fromTheme("application-exit");
      QAction *exitAct = fileMenu->addAction(exitIcon, tr("E&xit"), qApp, &QApplication::closeAllWindows);
      exitAct->setShortcuts(QKeySequence::Quit);
      exitAct->setStatusTip(tr("Exit the application"));
      fileMenu->addAction(exitAct);

視窗以隨機順序關閉,直到一個視窗不接受關閉事件。 應用程式在最後一個視窗成功關閉時退出; 這可以通過將quitOnLastWindowClosed設定為false來關閉。

11、[static] int QApplication::colorSpec()

返回顏色規格。

12、[static] QDesktopWidget *QApplication::desktop()

返回桌面小部件(也稱為根視窗)。

桌面可能由多個螢幕組成,所以它會不正確,例如,嘗試將某個小部件居中放置在桌面的幾何圖形中。 QDesktopWidget具有各種功能,用於在桌面上獲取有用的幾何圖形,例如QDesktopWidget :: screenGeometry()和QDesktopWidget :: availableGeometry()。

13、[protected] bool QApplication::event(QEvent *e)

14、[static] int QApplication::exec()

進入主事件迴圈並等待,直到呼叫exit(),然後返回設定為exit()的值(如果通過quit()呼叫exit(),則返回0。

有必要呼叫這個函式來啟動事件處理。主事件迴圈從視窗系統接收事件並將它們分派給應用程式小部件。

通常,在呼叫exec()之前,使用者互動不會發生。作為一種特殊情況,可以在呼叫exec()之前使用類似QMessageBox的模式小部件,因為模式小部件呼叫exec()來啟動本地事件迴圈。

為了讓您的應用程式執行空閒處理,即在沒有未決事件時執行特殊功能,請使用具有0超時的QTimer。使用processEvents()可以實現更高階的空閒處理方案。

我們建議您將清理程式碼連線到aboutToQuit()訊號,而不是將其放入應用程式的main()函式中。這是因為,在某些平臺上,QApplication :: exec()呼叫可能不會返回。例如,在Windows平臺上,當用戶登出時,系統在Qt關閉所有頂級視窗後終止程序。因此,不能保證應用程式將有時間在QApplication :: exec()呼叫之後退出其事件迴圈並在main()函式結束時執行程式碼。

15、[signal] void QApplication::focusChanged(QWidget *old, QWidget *now)

當具有鍵盤焦點的小部件從舊改變為現在時,即由於使用者按下Tab鍵,點選進入小部件或改變活動視窗時,發出該訊號。 舊的和現在都可以是空指標。

兩個小部件都通過QFocusEvent通知了更改後,發出訊號。

這個函式是在Qt 4.1中引入的。

16、[static] QWidget *QApplication::focusWidget()

返回具有鍵盤輸入焦點的應用程式小部件,如果此應用程式中沒有小部件具有焦點,則返回0。

17、[static] QFont QApplication::font()

返回預設的應用程式字型。

18、[static] QFont QApplication::font(const QWidget *widget)

這是一個過載函式。

返回小部件的預設字型。

19、[static] QFont QApplication::font(const char *className)

這是一個過載函式。

返回給定className的小部件的字型。

20、[static] QFontMetrics QApplication::fontMetrics()

返回應用程式字型的顯示(螢幕)字型指標。

21、[static] bool QApplication::isEffectEnabled(Qt::UIEffect effect)

如果啟用了效果,則返回true; 否則返回false。

預設情況下,Qt會嘗試使用桌面設定。 為了防止這種情況,請呼叫setDesktopSettingsAware(false)。

注意:在低於16位顏色深度的螢幕上,所有效果均被禁用。

22、[static] Qt::NavigationMode QApplication::navigationMode()

返回Qt正在使用哪種焦點導航。

此函式僅適用於嵌入式Linux Qt和Windows CE。

注意:在Windows CE上,此功能在預設情況下對於觸控裝置mkspecs處於禁用狀態。 要啟用鍵盤導航,請使用QT_KEYPAD_NAVIGATION定義構建Qt。

這個函式是在Qt 4.6中引入的。

23、bool QApplication::notify(QObject *receiver, QEvent *e)

24、[static] QPalette QApplication::palette(const QWidget *widget)

這是一個過載函式。

如果傳遞了一個小部件,則返回該小部件的類的預設調色盤。 這可能是也可能不是應用程式調色盤。 在大多數情況下,某些型別的視窗小部件沒有特殊的調色盤,但是一個明顯的例外是Windows下的彈出式選單,如果使用者在顯示設定中為選單定義了特殊的背景顏色。

25、[static] QPalette QApplication::palette(const char *className)

這是一個過載函式。

返回給定className的小部件的調色盤。

26、[static] void QApplication::setActiveWindow(QWidget *active)

響應系統事件,將活動視窗設定為活動視窗小部件。 該函式是從特定於平臺的事件處理程式中呼叫的。

警告:此功能不會將鍵盤焦點設定為活動小部件。 改為呼叫QWidget :: activateWindow()。

它設定activeWindow()和focusWidget()屬性,並將適當的WindowActivate / WindowDeactivate和FocusIn / FocusOut事件傳送到所有適當的小部件。 視窗將被啟用狀態(例如,線條編輯中的游標將閃爍),並且它將啟用工具提示。

27、[static] void QApplication::setColorSpec(int spec)

將應用程式的顏色規範設定為規範。

顏色規範控制應用程式在具有有限顏色的顯示器上執行時如何分配顏色,例如, 8位/ 256色顯示器。

顏色規格必須在建立QApplication物件之前設定。

選項是:

1、QApplication:: NORMALCOLOR。 這是預設的顏色分配策略。 如果您的應用程式使用少量顏色的按鈕,選單,文字和畫素圖,請使用此選項。 使用此選項,應用程式使用系統全域性顏色。 這適用於X11下的大多數應用程式,但在Windows平臺上,它可能會導致非標準顏色的抖動。

2、QApplication:: CustomColor。 如果您的應用程式需要少量自定義顏色,請使用此選項。 在X11上,此選項與NormalColor相同。 在Windows上,Qt建立一個Windows調色盤,並根據需要為其分配顏色。

3、QApplication:: ManyColor。 如果您的應用程式顏色很餓,例如需要數千種顏色,請使用此選項。在X11下的效果是:

1)、對於最多具有256色真彩色視覺的256色顯示器,使用預設視覺效果,並從彩色立方體分配顏色。 顏色立方體是6x6x6(216顏色)的“Web調色盤”(紅色,綠色和藍色元件總是具有以下值之一:0x00,0x33,0x66,0x99,0xCC或0xFF),但顏色數量 可以通過-ncols選項進行更改。 使用者可以強制應用程式使用-visual選項使用真彩色視覺效果。

2)、對於具有超過256種顏色的真彩視覺的256色顯示器,請使用該視覺效果。 例如,Silicon Graphics X伺服器提供此功能。 它們預設提供8位視覺效果,但當被問到時可以提供真實的顏色。

在Windows上,Qt建立一個Windows調色盤,並用一個彩色立方體填充它。

請注意,CustomColor和ManyColor選項可能導致顏色對映閃爍:前景應用程式獲取(大部分)可用顏色,而背景視窗看起來不那麼吸引人。

例;

int main(int argc, char *argv[])
  {
      QApplication::setColorSpec(QApplication::ManyColor);
      QApplication app(argc, argv);
      ...
      return app.exec();
  }

28、[static] void QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable = true)

如果啟用為true,則啟用UI效果效果,否則不會使用該效果。

注意:在低於16位顏色深度的螢幕上,所有效果均被禁用。

29、[static] void QApplication::setFont(const QFont &font, const char *className = Q_NULLPTR)

將預設應用程式字型更改為字型。 如果傳遞了className,則該更改僅適用於繼承className的類(由QObject :: inherits()報告)。

在應用程式啟動時,預設字型取決於視窗系統。 它可以根據視窗系統版本和區域設定而變化。 該功能可以讓您覆蓋預設字型; 但重寫可能是一個壞主意,因為,例如,某些語言環境需要額外的大字型來支援其特殊字元。

警告:請勿將此功能與Qt樣式表一起使用。 應用程式的字型可以使用“字型”樣式表屬性進行自定義。 要為所有QPushButtons設定粗體字型,請將應用程式styleSheet()設定為“QPushButton {font:bold}”

30、[static] void QApplication::setNavigationMode(Qt::NavigationMode mode)

設定Qt應該用於模式的焦點導航型別。

此功能僅適用於嵌入式Linux Qt和Windows CE。

注意:在Windows CE上,此功能在預設情況下對於觸控裝置mkspecs處於禁用狀態。 要啟用鍵盤導航,請使用QT_KEYPAD_NAVIGATION定義構建Qt。

這個函式是在Qt 4.6中引入的。

31、[static] void QApplication::setPalette(const QPalette &palette, const char *className = Q_NULLPTR)

將預設應用程式調色盤更改為調色盤。

如果傳遞了className,則更改僅適用於繼承className的小部件(由QObject :: inherits()報告)。 如果className為0,則該更改會影響所有小部件,從而覆蓋以前設定的任何類特定的調色盤。

可以根據QStyle :: polish()中的當前GUI樣式更改調色盤。

警告:請勿將此功能與Qt樣式表一起使用。 使用樣式表時,可以使用“顏色”,“背景顏色”,“選擇顏色”,“選擇背景顏色”和“備用背景顏色”來自定義控制元件的調色盤。

注意:某些樣式不會為所有繪圖使用調色盤,例如,如果他們使用本機主題引擎。 這是Windows XP,Windows Vista和OS X樣式的情況。

32、[static] void QApplication::setStyle(QStyle *style)

將應用程式的GUI樣式設定為樣式。 樣式物件的所有權轉移到QApplication,所以QApplication將刪除應用程式退出時的樣式物件,或者當設定新樣式並且舊樣式仍然是應用程式物件的父類時。

例;

QApplication::setStyle(QStyleFactory::create("Fusion"));

切換應用程式樣式時,調色盤將設定回初始顏色或系統預設值。 這是必要的,因為某些樣式必須調整調色盤以完全符合樣式指南。

在調色盤設定之前設定樣式,即在建立QApplication之前,將導致應用程式使用QStyle :: standardPalette()作為調色盤。

警告:自定義QStyle子類目前不支援Qt樣式表。 我們計劃在未來的某個版本中解決這個問題。

33、[static] QStyle *QApplication::setStyle(const QString &style)

這是一個過載函式。

從QStyleFactory中為樣式請求一個QStyle物件。

該字串必須是QStyleFactory :: keys()之一,通常是“windows”,“fusion”,“windowsxp”或“macintosh”之一。 樣式名稱不區分大小寫。

如果傳遞未知樣式,則返回0,否則將返回的QStyle物件設定為應用程式的GUI樣式。

警告:為確保應用程式的樣式設定正確,最好在QApplication建構函式之前呼叫此函式(如果可能)。

34、[static] QStyle *QApplication::style()

返回應用程式的樣式物件。

35、[static] QWidget *QApplication::topLevelAt(const QPoint &point)

這是一個過載函式。

返回點(x,y)處的頂級小部件; 如果沒有這樣的小部件,則返回0。

36、[static] QWidgetList QApplication::topLevelWidgets()

返回應用程式中頂級視窗小部件(視窗)的列表。

注意:某些頂級視窗小部件可能會隱藏,例如,如果當前沒有顯示任何工具提示,則為工具提示。

例;

  void showAllHiddenTopLevelWidgets()
  {
      foreach (QWidget *widget, QApplication::topLevelWidgets()) {
          if (widget->isHidden())
              widget->show();
      }
  }

37、[static] QWidget *QApplication::widgetAt(const QPoint &point)

在全域性螢幕位置點返回小部件,如果沒有Qt小部件,則返回0。

這個函式可能很慢。

38、[static] QWidget *QApplication::widgetAt(int x, int y)

這是一個過載函式。

在全域性螢幕位置(x,y)返回小部件,如果沒有Qt小部件,則返回0。

四、巨集

1、qApp

引用唯一應用程式物件的全域性指標。 它等同於QCoreApplication :: instance()函式返回的指標,但在GUI應用程式中,它是指向QApplication例項的指標。

只能建立一個應用程式物件。