Hello Qt(在Linux下编写运行Qt程序)
From:?http://www.yafeilinux.com/?p=763
<一>Hello Qt小試牛刀!
說(shuō)明:我們需要在Linux下已經(jīng)安裝了Qt。
1.下面是整個(gè)程序的詳細(xì)介紹:
#include <QApplication>
?//第一行是定義一個(gè)應(yīng)用程序類<QApplication>的頭文件,所有Qt圖形化應(yīng)用程序都包含在此頭文件,它包含了Qt圖形化應(yīng)用程序的各種資源、基本設(shè)置、控制流以及事件處理等,如果是Qt的非圖形化應(yīng)用程,則需包含<QCoreApplication>
#include <QLabel>
//第二行定義一個(gè)應(yīng)用到的標(biāo)簽類<QLabel>的頭文件,
int main(int argc,char *argv[])
?//主函數(shù)作為應(yīng)用程序的入口,所有Qt應(yīng)用程序都必須有一個(gè)主函數(shù)名,以argc和argv作為入口參數(shù)。
{
//定義一雙花括符,這是程序的書寫格式。???????
?QApplication app(argc,argv);
?//創(chuàng)建一個(gè)QApplication對(duì)象,用來(lái)管理整個(gè)應(yīng)用程序所用到的資源。每個(gè)Qt應(yīng)用程序有且只有一個(gè)QApplication對(duì)象。argc和argv是QApplication構(gòu)造函數(shù)的兩個(gè)參數(shù)。支持Qt的程序處理命令行參數(shù)。 ??????
QLabel *label = new QLabel(“Hello Qt!~”);
//創(chuàng)建一個(gè)顯示”Hello Qt!”的QLabel標(biāo)簽窗口部件(window gadget簡(jiǎn)稱widget)作為應(yīng)用程序的窗口。應(yīng)用程序窗口通常是一個(gè)包含了一個(gè)QMenuBar(Qt菜單欄)、一些QToolBar(Qt工具欄)、一個(gè)QStatusBar(Qt狀態(tài)欄)以及一些其他窗口部件的窗口部件。大多數(shù)應(yīng)用程序都會(huì)用QMainWindow或者一個(gè)QDialog作為它的窗口,但Qt可以用任何窗口部件作為它的應(yīng)用程序窗口,這就是為什么很多人說(shuō)Qt很靈活的原因。其實(shí)可以省略這樣定義QLabel對(duì)象的:QLabel label(“Hello Qt!”);將QLabel標(biāo)簽窗口部件顯示修改為lable.show(); ??????
Label->show();
//QLable的標(biāo)簽窗口部件在創(chuàng)建的時(shí)候是被隱藏的,因此我們要調(diào)用show()函數(shù)來(lái)顯示標(biāo)簽窗口部件 ??????
?app.exec();
?//調(diào)用QApplication的exec()方法,將應(yīng)用程序的控制權(quán)限傳遞給Qt,此時(shí)程序會(huì)進(jìn)入事件循環(huán)狀態(tài)模式,程序等待用戶對(duì)其發(fā)生的動(dòng)作相應(yīng)。Qt將完成事件處理及顯示的工作在應(yīng)用程序退出時(shí)返回exec()的值。
}
2.在Linux下的命令行編輯程序:
[root@localhost root]# mkdir hello
//mkdir命令創(chuàng)建一個(gè)hello目錄
[root@localhost root]# cd hello
//cd命令切換到剛才創(chuàng)建的hello目錄
[root@localhost hello]# vi main.cpp
//在hello目錄中用vi創(chuàng)建一個(gè)main.cpp文件? 將下面的代碼輸入到main.cpp文件中,前面有介紹了,這里就不多說(shuō)了
#include <QApplication>
#include <QLabel>
int main(int argc,char *argv[])
{ ??????
QApplication app(argc,argv); ??????
QLabel *label = new QLabel(“Hello Qt”); ??????
Label->show(); ??????
?return? app.exec();
}
3.然后在命令行編譯程序:
[root@localhost hello]# qmake –project
//執(zhí)行qmake –project,因?yàn)槟夸浭莌ello,因此在hello目錄下生成一個(gè)與平臺(tái)無(wú)關(guān)的項(xiàng)目文件hello.pro,
[root@localhost hello]# qmake hello.pro
?//執(zhí)行qmake hello.pro項(xiàng)目文件后,在hello目錄下生成一個(gè)與平臺(tái)有關(guān)的Makefile文件。
[root@localhost hello]# make
?//執(zhí)行make進(jìn)行編譯源代碼,并生成main.o目標(biāo)文件及hello執(zhí)行文件。
[root@localhost hello]# ./hello
//執(zhí)行hello,就會(huì)彈出Hello Qt窗口,到此說(shuō)明成功了?
對(duì)顯示信息進(jìn)一步了解,將main.cpp程序中的QLabel *label = new QLabel(“Hello Qt!”);中的Hello Qt!用html格式進(jìn)行修改,修改如下: QLabel *label = new QLabel(“<h2><i>Hello</i>””<font color=red>Qt!</font></h2>”); 意思是<h2>Hello Qt</h2>顯示與二號(hào)標(biāo)題字體大小, html的<i></i>標(biāo)簽將Hello加傾斜表示,<font color=red>Qt!</font>表示將Qt!顏色設(shè)置為紅色。點(diǎn)擊QLabel標(biāo)簽窗口部件左上角的”X”關(guān)閉窗口,用vi命令打開main.cpp C++程序源文件,并修改文本顯示的內(nèi)容,然后保存退出,重新執(zhí)行make命令編譯源代碼
[root@localhost hello]# ./hello
?//再次執(zhí)行hello可執(zhí)行文件,彈出的QLabel標(biāo)簽窗口與剛才的不同,現(xiàn)實(shí)了剛才的預(yù)想的效果
==============================================================================================參考上面的內(nèi)容,我實(shí)際操作了一遍。環(huán)境:Fedora12 + QTCreator2.0.1
在執(zhí)行“make"時(shí)出現(xiàn)了錯(cuò)誤,提示ld找不到:-lqt-mt,于是打開Makefile仔細(xì)看了下,發(fā)現(xiàn)里面生成的內(nèi)容有問(wèn)題,搜索目錄中有qt3.3的目錄,于是想到可能是生成的Makefile有問(wèn)題,而這個(gè)文件剛好是由qmake來(lái)生成的,因此推斷所調(diào)用的qmake版本不對(duì)。
仔細(xì)看看Fedora12就會(huì)發(fā)現(xiàn),在系統(tǒng)裝好后,默認(rèn)會(huì)安裝上QT3和QT4的,而且環(huán)境變量如QTDIR, QTINC的指向都不是QTCreator目錄下的。修改前的環(huán)境變量為:
QTDIR=/usr/lib/qt-3.3 QTINC=/usr/lib/qt-3.3/include QT_IM_MODULE=xim QTLIB=/usr/lib/qt-3.3/lib PATH=/opt/oracle/product/11.2.0/db_1/bin:/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/zcm/bin修改后的環(huán)境變量為(我電腦上qtcreator的安裝目錄為:/opt/qtsdk-2010.05): [zcm@qt #160]$cat qt.config QTDIR=/opt/qtsdk-2010.05 QTINC=/opt/qtsdk-2010.05/qt/include QT_IM_MODULE=xim QTLIB=/opt/qtsdk-2010.05/lib PATH=/usr/lib/qt4/bin:/opt/oracle/product/11.2.0/db_1/bin:/opt/qtsdk-2010.05/qt/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/zcm/bin
最后,執(zhí)行make生成hello可執(zhí)行文件,測(cè)試運(yùn)行:./hello
仔細(xì)比較下下就會(huì)發(fā)現(xiàn):不同版本qmake生成的Makefile內(nèi)容是不同的,這就是利用makefile生成可執(zhí)行文件時(shí)會(huì)失敗的原因了!
總結(jié)
以上是生活随笔為你收集整理的Hello Qt(在Linux下编写运行Qt程序)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PC端和移动APP端CSS样式初始化
- 下一篇: [Linux C]递归遍历指定目录下的子