跨平臺開發工具Qt教程:如何編譯程序
Qt(發音為“ cute”,而不是“ cu-tee”)是一個跨平臺框架,通常用作圖形工具包,它不僅創建CLI應用程序中也非常有用。而且它也可以在三種主要的臺式機操作系統以及移動操作系統(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設備,Android(Necessitas)和iOS的端口上運行。更多Qt產品詳情點擊這里》》
Qt程序如何編譯Qt Creator為我們調用了構建系統,但是了解Qt程序編譯的過程也是一件有趣的事。對于小型程序,手動編譯所有內容,創建目標文件然后進行鏈接很容易。但是對于大型項目,命令行很容易編寫。如果您熟悉Linux,則可能知道所有程序都是使用描述所有要執行的命令行的makefile進行編譯的。但是對于某些項目,編寫makefile也可能會感覺乏味。
qmake是Qt附帶的構建系統,它會為您生成那些makefile(還有其他可以使用的makefile,但是我們在這里給出qmake的示例)。使用簡單的語法,它會生成用于編譯Qt程序的makefile。但這不是它的唯一功能。Qt使用元對象來擴展C ++功能,而qmake負責準備一個包含此元對象提取階段的makefile。您將在另一章中看到。
因此,Qt應用程序分3個步驟進行編譯
- 編寫一個.pro文件來描述要編譯的項目
- 使用qmake生成一個makefile
- 該程序是使用make(或Windows上的nmake或jom)構建的
本章概述了小部件模塊。它將介紹小部件屬性,小部件中使用的繼承方案等。接下來我們將對這些按鈕進行一些自定義。

Qt對象具有許多可以使用getter和setter修改的屬性。在Qt中,如果一個屬性稱為foo,則關聯的getter和setter將具有這些簽名
Tfoo() const; void setFoo(const T);
實際上,Qt將屬性,獲取器和設置器的系統擴展到稱為property的東西。屬性是可以訪問,修改或常量并且可以通知更改的任何類型的值。屬性系統很有用,尤其是在第三部分(QML)中。現在,我們將使用“屬性”或“屬性”來做同樣的事情。
QPushButton具有很多屬性:
- 文本
- 字形
- 工具提示
- 圖標
- ...
因此,我們可以使用它們來自定義按鈕。
我們首先更改文本并添加工具提示
#include#include int main(int argc, char **argv) { QApplication app (argc, argv); QPushButton button; button.setText("My text"); button.setToolTip("A tooltip"); button.show(); return app.exec(); }
結果如下:

我們還可以更改字體。在Qt中,字體用QFont類表示。該文檔提供了大量信息。我們在這里特別關注QFont的構造函數之一。
QFont(const QString & family, int pointSize = –1, int weight = -1, bool italic = false)
為了更改字體,我們必須實例化QFont類,然后使用setFont將其傳遞給QPushButton。以下代碼片段會將字體更改為Courier。
QFont font ("Courier"); button.setFont(font);
您可以嘗試使用QFont構造函數的其他參數來重現本章第一張圖片中所示的按鈕。
設置圖標也不是很困難。QIcon類表示一個圖標。如果文件系統中具有絕對(或相對)路徑,則可以創建一個圖標。我建議在此示例中提供絕對路徑。但是出于部署方面的考慮,您可以使用相對路徑,或者更好地使用資源系統。
QIcon icon ("/path/to/my/icon/icon.png"); button.setIcon(icon);
在Linux和其他某些OS上,有一種方便的方法可以通過圖標主題設置圖標。可以使用靜態方法來完成:
QIcon Qicon::fromTheme ( const QString &name, const QIcon &fallback = QIcon());
例如,在本章開始的屏幕截圖中,笑臉來自Oxygen KDE圖標主題,其設置方式是:
button.setIcon(QIcon::fromTheme("face-smile"));
今天分享的內容就到這里,下一篇文章中我們講解Qt類層次,更多Qt產品詳情點擊這里》》。