1. 程式人生 > >《Qt Creator快速入門》第二版主要更新內容

《Qt Creator快速入門》第二版主要更新內容

沒有涉及到操作或程式設計的修改不再列出。

第1章
1.1.1下載軟體
Qt使用4.8.5版本 下載檔案:qt-win-opensource-4.8.5-mingw.exe Qt Creator使用2.8.0版本 下載檔案:qt-creator-windows-opensource-2.8.0.exe

1.1.2安裝軟體
先安裝Qt Creator 。雙擊執行qt-creator-windows-opensource-2.8.0.exe,然後按照預設設定安裝即可(注意:如果要改變安裝目錄,那麼安裝路徑中不能有中文)。當Qt Creator安裝完成後,雙擊執行qt-win-opensource-4.8.5-mingw.exe安裝Qt框架。整個過程也是按預設設定即可。在MinGW安裝(MinGW Installation)介面需要指定MinGW的路徑,這裡提示需要使用GCC 4.4版本的MinGW。可以到Qter開源社群(
www.qter.org
)的下載頁面下載MinGW,下載的檔案是MinGW-gcc440_1.zip,下載完成後需要對其進行解壓縮,筆者這裡解壓縮到了Qt的預設安裝目錄,如果這裡都是使用的預設路徑,那麼應該填寫C:\Qt\mingw,如圖1-1所示。

1.2.1執行一個示例程式
       現在將Qt CreatorQt庫進行連線。選擇“工具→選項”選單項,然後選擇“構建和執行”項。因為這裡是分別下載安裝的QtQt Creator ,它們並沒有自動關聯,需要讀者手動設定。先設定編譯器,點選右上角的“新增”按鈕,選擇第一項MinGW,然後新增編譯器路徑,筆者這裡是
C:\Qt\mingw\bin\gcc.exe,完成後點選下面的“應用”按鈕儲存設定,如圖1-3所示。下面新增Qt版本,點選右上方的“新增”按鈕,然後選擇qmake.exe的路徑,筆者這裡是C:\Qt\4.8.5\bin\qmake.exe,完成後再次點選“應用”按鈕儲存設定,如圖1-4所示。最後到“構建套件(Kit)”中,可以看到已經有了一個“桌面(預設)”,這裡雙擊它直接進行設定(當然也可以新增一個新的套件再進行設定),名稱可以隨意設定,這裡修改為“Desktop Qt 4.8.5”,表明是Qt 4.8.5的桌面版;下面編譯器一項已經預設選擇了前面設定的MinGW;最後將Qt版本選擇為前面新增的
Qt 4.8.54.8.5)一項。為了以後可以在除錯模式進行程式除錯,這裡需要指定偵錯程式,讀者可以到Qter開源社群(www.qter.org)的下載頁面下載偵錯程式,因為筆者使用的是Windows 7作業系統,所以下載的檔案是qtcreator-gdb-7.4-MINGW32_NT-6.1-i686.tar,讀者可以根據自己的系統選擇下載,也可以到http://download.qt-project.org/official_releases/gdb/進行下載。下載完成後需要解壓縮檔案,筆者這裡解壓縮到了C:\Qt目錄。然後回到Qt Creator中繼續進行設定,點選偵錯程式項後面的“編輯”按鈕,在彈出的對話方塊中指定“二進位制”路徑,筆者這裡是C:\Qt\qtcreator-gdb-7.4-MINGW32_NT-6.1-i686\gdb-i686-pc-mingw32.exe。設定完成後如圖1-5所示。最後點選“確定”按鈕儲存退出,回到Qt Creator歡迎介面。

第2章
2.3.1純程式碼編寫程式與命令列編譯

第五,設定顯示中文。更改程式碼如下: 1          #include <QApplication> 2          #include <QDialog> 3          #include <QLabel> 4          #include <QTextCodec> 5          int main(int argc, char *argv[]) 6          { 7              QApplication a(argc, argv); 8              QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); 9              QDialog w; 10          QLabel label(&w); 11          label.setText(QObject::tr("Hello World! 你好Qt!")); 12          w.show(); 13          return a.exec(); 14      } 在第4行添加了QTextCodec類的標頭檔案包含。QTextCodec類提供了文字編碼的轉換功能。第8行使用了QTextCodec類中的靜態函式setCodecForTr(),用來設定QObject::tr()函式所要使用的字符集,就像第11行中所看到的那樣,tr()函式可以使用指定的字符集來對文字編碼進行轉換。這裡使用了QTextCodec::codecForName("UTF-8")指定使用“UTF-8”字符集進行編碼,讀者也可以根據具體環境設定其他字符集。 為了能夠顯示中文,需要設定字符集,然後使用QObject::tr()函式將字串進行編碼轉換。其實tr()函式還可以實現多語言支援,這個在第9章國際化部分將會講到。需要說明的是,setCodecForTr()函式最好的放置位置就是像程式中這樣,放在main()函式中的QApplication物件下面。Qt程式中所有要顯示到介面上的字串最好都使用tr()函式括起來,而對於不是要顯示到介面上的字串中如果包含了中文,可以使用QString()進行編碼轉換,這需要在主函式中新增如下程式碼進行設定: QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));        雖然使用這種方法可以很簡單地實現中文顯示,不過還是建議正規編寫程式碼時全部使用英文,最後使用第9章講到的國際化的方式來實現中文顯示。
2.4.2專案檔案
       下面來看一下2.1節中建立的helloworld專案的helloworld.pro檔案的內容: 1          #------------------------------------------------- 2          # 3          # Project created by QtCreator 2013-08-07T23:10:24 4          # 5          #------------------------------------------------- 6            7          QT      += core gui 8            9          greaterThan(QT_MAJOR_VERSION,4): QT += widgets 10         11       TARGET = helloworld 12       TEMPLATE = app 13         14         15       SOURCES += main.cpp\ 16               hellodialog.cpp 17         18       HEADERS  += hellodialog.h 19         20       FORMS    += hellodialog.ui 21         22       RC_FILE  += myico.rc 第1~5行是註釋資訊,說明這個檔案生成的時間。第7行表明了這個專案使用的模組。 core模組包含了Qt非圖形使用者介面的核心功能,其他所有模組都依賴於這個模組;而gui模組擴充套件了core模組的圖形介面功能。也就是說,如果不需要設計圖形介面的程式,那麼只需要core模組就可以了,但是如果涉及圖形介面,那麼就必須包含gui模組。其實所謂的模組,就是很多相關類的集合,比如所有與圖形介面有關的類都在gui模組中,讀者可以在Qt幫助中檢視QtCore ModuleQtGui Module關鍵字。第9行是為了和Qt5相容新增的一行程式碼,表明如果是Qt5版本,就新增QT +=widgets一行程式碼。第11行是生成的目標檔案的名稱,就是生成的exe檔案的名字,預設的是工程的名字,當然也可以在這裡改為別的名字。第12行使用app模板,表明這是個應用程式。第151820行分別是工程中包含的原始檔、標頭檔案和介面檔案。第22行就是新增的應用程式圖示的檔案。這裡這些檔案都使用了相對路徑,因為都在專案目錄中,所以只寫了檔名。        這裡還要提一下那個在專案資料夾中生成的.pro.user檔案,它包含了本地構建資訊,包含Qt版本和構建目錄等。可以用記事本或者寫字板將這個檔案開啟檢視其內容。當使用QtCreator開啟一個.pro檔案時會自動生成一個.pro.user檔案。因為讀者的系統環境都不太一樣,Qt的安裝於設定也不盡相同,所以如果要將自己的原始碼公開,一般不需要包含這個user檔案。如果要開啟別人的專案檔案,但裡面包含了user檔案,Qt Creator則會彈出提示視窗,詢問是否載入特定的環境設定,這時應該選擇“否”,然後選擇自己的Qt版本即可,如圖2-30所示。

第3章
49頁,修改說明。
先在showChildDialog上右擊,在彈出的選單中選擇“重構→Rename Symbol UnderCursor”,或者直接使用


第5章
第103頁。 “這時先執行程式,然後從桌面上將一個文字檔案拖入程式中。” 前面新增 “最後進入mainwindow.cpp檔案,在建構函式中新增setAcceptDrops(true);一行程式碼,使主視窗可以接受放下事件。

第7章
1.        第139頁,將#include<QtCore/QCoreApplication> 修改為:#include<QCoreApplication>
2.        第141頁,將#include<QtCore/QCoreApplication> 修改為:#include<QCoreApplication>

3.        第143頁,將#include<QtCore/QCoreApplication> 修改為:#include<QCoreApplication>

4.        第145頁,將#include<QtCore/QCoreApplication> 修改為:#include<QCoreApplication>

5.        第147頁,將#include<QtCore/QCoreApplication> 修改為:#include<QCoreApplication>

6.        第149頁,將#include<QtCore/QCoreApplication> 修改為:#include<QCoreApplication>

7.        第150頁,
#include<QtCore/QCoreApplication> 修改為:#include<QCoreApplication>
QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 修改為:QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

8.        第153頁,將#include<QtCore/QCoreApplication> 修改為:#include<QCoreApplication>

9.        第154頁,將QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 修改為:QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
10.    第166頁,刪除下面的內容:
當要在表示式中使用中文時,需要在main.cpp檔案中新增標頭檔案#include <QTextCodec>,然後再main()函式中新增如下一行程式碼: QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());

第8章
第177頁,新增修改內容:
可以看到,當一個部件獲得滑鼠焦點後就會顯示”更改為:“如果在WindowsXP系統中,當一個部件獲得滑鼠焦點後就會顯示”


第9章
1.        第184頁,在“第四步,使用…”這段前面新增一段: 該步也可以通過“工具→外部→Qt語言家→更新翻譯(lupdate)”選單項來快速完成,注意在使用該選單項之前先儲存所有修改過的檔案。

2.        第187頁,首先刪除圖9-2,然後新增修改內容:
輸出資訊如圖9-2所示,這表明已經生成了.qm檔案。另外在Qt Linguist中也可以使用File→Reelase和File→Release As這兩個選單項來生成當前已開啟的.ts檔案對應的.qm檔案。
更改為:
這樣就成功生成了.qm檔案。也可以在QtLinguist中使用“檔案→釋出”和“檔案→另外發布為”這兩個選單項來生成當前已開啟的.ts檔案對應的.qm檔案。該步還可以通過Qt Creator的“工具→外部→Qt語言家→釋出翻譯(lrelease)”選單項來快速完成。

3.        第188頁,新增內容:
這裡先載入了.qm檔案(使用了相對路徑),然後為QApplication物件安裝了翻譯。注意,這幾行程式碼一定要放到建立部件的程式碼之前,比如這裡放到了“MainWindow w;”一行程式碼之前,這樣才能對該部件進行翻譯。另外,有時可能因為部件的大小問題使得翻譯後的文字無法完全顯示,較好地解決方法就是使用佈局管理器。

第12章
第284頁,新增內容:
再到myglwidget.cpp檔案中先包含#include<GL/glu.h>標頭檔案,然後新增這3個函式的定義

第15章
第319頁,將:
#include <QtCore/QCoreApplication>   修改為: #include <QCoreApplication>
QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 修改為: QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));


第17章
1.        第368頁,新增內容:
這裡還列出了編譯驅動器外掛和編寫自定義的資料庫驅動的方法。
更改為:
這裡還列出了在各種平臺上編譯資料庫驅動外掛和編寫自定義的資料庫驅動的方法,讀者也可以到Qter開源社群(www.qter.org)的書籍頁面檢視MySQL資料庫驅動的編譯教程。


2.        第377頁,修改程式碼:
  QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); 兩行程式碼更改為: QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
3.        第386頁,修改程式碼:  #include<QtCore/QCoreApplication> 修改為:#include <QCoreApplication>



4.        第388頁,修改程式碼:
  QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); 修改為:QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
5.        第399頁,修改程式碼:  #include<QtCore/QCoreApplication> 修改為:#include <QCoreApplication>


第18章
1.        第405頁,修改程式碼:
QTextCodec*codec = QTextCodec::codecForLocale(); 修改為: QTextCodec *codec =QTextCodec::codecForName("UTF-8");


2.        第408頁,刪除內容。
可以輸入一個網路檔案地址然後點選“下載”按鈕將其下載到本地,比如下載華軍軟體園上的勞拉方塊遊戲,可以使用如下URL地址:http://zzidc.onlinedown.net:82/down/laolafangkuaijin.rar 


3.        第409頁,修改程式碼:
ftp = new QFtp(this); ftp->connectToHost("ftp.qt.nokia.com"); ftp->login(); ftp->cd("qt");
修改為:
ftp = new QFtp(this); ftp->connectToHost("ftp.qt-project.org"); ftp->login(); ftp->cd("qt/source");

4.        第412頁,修