跨平臺(tái)開發(fā)工具Qt教程:如何編譯程序
Qt(發(fā)音為“ cute”,而不是“ cu-tee”)是一個(gè)跨平臺(tái)框架,通常用作圖形工具包,它不僅創(chuàng)建CLI應(yīng)用程序中也非常有用。而且它也可以在三種主要的臺(tái)式機(jī)操作系統(tǒng)以及移動(dòng)操作系統(tǒng)(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設(shè)備,Android(Necessitas)和iOS的端口上運(yùn)行。更多Qt產(chǎn)品詳情點(diǎn)擊這里》》
Qt程序如何編譯Qt Creator為我們調(diào)用了構(gòu)建系統(tǒng),但是了解Qt程序編譯的過(guò)程也是一件有趣的事。對(duì)于小型程序,手動(dòng)編譯所有內(nèi)容,創(chuàng)建目標(biāo)文件然后進(jìn)行鏈接很容易。但是對(duì)于大型項(xiàng)目,命令行很容易編寫。如果您熟悉Linux,則可能知道所有程序都是使用描述所有要執(zhí)行的命令行的makefile進(jìn)行編譯的。但是對(duì)于某些項(xiàng)目,編寫makefile也可能會(huì)感覺(jué)乏味。
qmake是Qt附帶的構(gòu)建系統(tǒng),它會(huì)為您生成那些makefile(還有其他可以使用的makefile,但是我們?cè)谶@里給出qmake的示例)。使用簡(jiǎn)單的語(yǔ)法,它會(huì)生成用于編譯Qt程序的makefile。但這不是它的唯一功能。Qt使用元對(duì)象來(lái)擴(kuò)展C ++功能,而qmake負(fù)責(zé)準(zhǔn)備一個(gè)包含此元對(duì)象提取階段的makefile。您將在另一章中看到。
因此,Qt應(yīng)用程序分3個(gè)步驟進(jìn)行編譯
- 編寫一個(gè).pro文件來(lái)描述要編譯的項(xiàng)目
- 使用qmake生成一個(gè)makefile
- 該程序是使用make(或Windows上的nmake或jom)構(gòu)建的
本章概述了小部件模塊。它將介紹小部件屬性,小部件中使用的繼承方案等。接下來(lái)我們將對(duì)這些按鈕進(jìn)行一些自定義。
Qt對(duì)象具有許多可以使用getter和setter修改的屬性。在Qt中,如果一個(gè)屬性稱為foo,則關(guān)聯(lián)的getter和setter將具有這些簽名
Tfoo() const; void setFoo(const T);
實(shí)際上,Qt將屬性,獲取器和設(shè)置器的系統(tǒng)擴(kuò)展到稱為property的東西。屬性是可以訪問(wèn),修改或常量并且可以通知更改的任何類型的值。屬性系統(tǒng)很有用,尤其是在第三部分(QML)中?,F(xiàn)在,我們將使用“屬性”或“屬性”來(lái)做同樣的事情。
QPushButton具有很多屬性:
- 文本
- 字形
- 工具提示
- 圖標(biāo)
- ...
因此,我們可以使用它們來(lái)自定義按鈕。
我們首先更改文本并添加工具提示
#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(); }
結(jié)果如下:
我們還可以更改字體。在Qt中,字體用QFont類表示。該文檔提供了大量信息。我們?cè)谶@里特別關(guān)注QFont的構(gòu)造函數(shù)之一。
QFont(const QString & family, int pointSize = –1, int weight = -1, bool italic = false)
為了更改字體,我們必須實(shí)例化QFont類,然后使用setFont將其傳遞給QPushButton。以下代碼片段會(huì)將字體更改為Courier。
QFont font ("Courier"); button.setFont(font);
您可以嘗試使用QFont構(gòu)造函數(shù)的其他參數(shù)來(lái)重現(xiàn)本章第一張圖片中所示的按鈕。
設(shè)置圖標(biāo)也不是很困難。QIcon類表示一個(gè)圖標(biāo)。如果文件系統(tǒng)中具有絕對(duì)(或相對(duì))路徑,則可以創(chuàng)建一個(gè)圖標(biāo)。我建議在此示例中提供絕對(duì)路徑。但是出于部署方面的考慮,您可以使用相對(duì)路徑,或者更好地使用資源系統(tǒng)。
QIcon icon ("/path/to/my/icon/icon.png"); button.setIcon(icon);
在Linux和其他某些OS上,有一種方便的方法可以通過(guò)圖標(biāo)主題設(shè)置圖標(biāo)。可以使用靜態(tài)方法來(lái)完成:
QIcon Qicon::fromTheme ( const QString &name, const QIcon &fallback = QIcon());
例如,在本章開始的屏幕截圖中,笑臉來(lái)自O(shè)xygen KDE圖標(biāo)主題,其設(shè)置方式是:
button.setIcon(QIcon::fromTheme("face-smile"));
今天分享的內(nèi)容就到這里,下一篇文章中我們講解Qt類層次,更多Qt產(chǎn)品詳情點(diǎn)擊這里》》。