一步步创建Qt Widget项目+TextFinder案例(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)
創建一個基于應用的QtWidget應用程序
這個手冊描述了怎樣使用QtCreater創建個一個小的Qt應用程序,Text Finder.它是Qt工具Text Finder例子的簡寫版本。這個應用程序的用戶界面通過使用Qt Designer來構造生成。邏輯上來說,這個應用程序是通過代碼編輯器上編寫C++代碼實現的。
?
創建Text Finder項目案例:
1選擇File(文件)> New Fileor Project(新建文件或項目) > Application(應用程序)> QtWidgets Application > Choose(選擇)
接著打開了項目介紹和位置窗口
2在名稱的文本框中,填寫TextFinder
3在創建路徑的文本框中,鍵入項目文件存儲路徑,例如:E:\Examples,接著點擊”下一步”(在Windows和Linux平臺)或者”繼續”(在OS X平臺上)。
構建套件對話框打開了:
4為運行您的項目選擇構建套件,接著點擊”下一步”或者”繼續”
注意:如果一個套件在”工具 > 選項 >編譯和運行 >Kits”,這個對話框將會跳過。
接著”類信息”對話框打開了:
5在類名的文本框中,TextFinder作為類名。
6在基類列表里,選擇QWidget作為基類類型。
注意:頭文件,源文件和界面文件將根據類名自動匹配。
7點擊Next和繼續。
接著”項目管理”窗口被打開:
??????8檢查項目設置,并且點擊”完成”(在Windows和Linux平臺)或者”繼續”(在OS X平臺)
TextFinder項目包含以下文件:
| textfinder.h | 截圖:
|
| textfinder.cpp | |
| main.cpp | |
| textfinder.ui | |
| TextFinder.pro |
添加缺少部分:
開始設計用戶界面,添加缺少的代碼,實現查找功能。
設計用戶界面:
1在Qt Creater中的Edit編輯模式里,雙擊textfind.ui文件,轉到Qt設計界面。
2拖拽下面的部件到界面中:
| Label(QLabel) |
|
| Line Edit(QLineEdit) | |
| PushButton(QPushButton) |
注意:如果想快速定位這些部件,可以使用在工具欄上部的搜索窗口。
例如,查找Label部件,可以輸入Label進行查找:
|
|
|
??????3雙擊Label部件,鍵入文本”keyword”
??????4雙擊Push Button部件,鍵入文本”Find”
??????5在屬性面板,改變objectName為findButton
??????6 按Ctrl+A(或者Cmd+A)選中這些部件,點擊”水平布局”(在Linux和Window平臺上按Ctrl+H,在OS X平臺上按Ctrl +Shift + H)應用一個水平布局(QHBoxLayout)。
??????7拖拽一個Text Edit部件(QTextEdit)到界面上去。
??????8選中設計窗口空白區域,點擊”垂直布局”(或按Ctrl + L)來應用一個水平布局(QVBoxLayout)。
應用水平和垂直布局確保在不同的屏幕上的自適應。
9當用戶點擊Find按鈕的時候,將調用一個find方法,如果您想實現這個功能,您可以使用Qt中的信號(signals)和槽(slots)機制。當特定的事件發生時候一個信號(signal)將被發散(emitted),與此同時,一個槽函數(slot)將會被調用來響應這個特定的信號。在Qt Widgets的Qt Designer中有一些預先定義好的信號(signals)和槽(slots)可以供您直接使用。接下來為find函數添加槽:
-
右擊”Find”按鈕打開一個右鍵菜單。
-
選擇 “轉到槽” >clicked(),接著選擇.
一個私有類型的槽函數on_findButton_clicked()被添加到了頭文件textfinder.h中去,一個私有的函數TextFinder::on_findButton_clicked()被添加到源文件textfinder.cpp源文件中。
截圖如下:
頭文件部分截圖:
??????10按Ctrl+S(或Cmd + S)保存您的改變。
??????如果想了解更多關于通過QtDesigner來設計界面的信息,查看Qt Designer手冊(http://doc.qt.io/qt-5/qtdesigner-manual.html)
?
完善頭文件:
???在textfinder.h文件里面已經有了必要的頭文件#include,一個構造函數,一個析構函數,和一個UI對象,你需要添加私有的函數loadTextFile(),讀取并且顯示文本的中的內容到QTextEdit中去。
??????1在項目面板中的編輯視圖,雙擊textfinder.h文件,打開并且編輯它。
??????2添加私有函數到私有區域,在Ui::TextFinder指針后面,插入一下的代碼片段
| privateslots: ???voidon_findButton_clicked(); ? private: ???Ui::TextFinder*ui; ???voidloadTextFile(); //加載文件的方法 |
完善源碼文件:
??????現在頭文件已經完成了,接下來轉到源文件:textfinder.cpp.
??????1在項目面板中的編輯視圖,雙擊源文件textfinder.cpp,開始編輯。
??????2在loadTextFile里面,加載一個文件使用QFile,讀取文件內容使用QTextStream,顯示文本內容到textEdit使用QTextEdit::setPlainText()函數,注意的是若想使用QFile和QTextStream,需要導入如下頭文件:
| #include <QFile> #include <QTextStream> |
??????3loadTextFile函數的內容如下:
| voidTextFinder::loadTextFile() { ???//加載資源文件input.txt,關于資源文件的加載將下文講述 ???QFileinputFile(":/input.txt"); ???inputFile.open(QIODevice::ReadOnly); ??? ???QTextStreamin(&inputFile); ???QStringline=in.readAll(); ???inputFile.close(); ??? ???ui->textEdit->setPlainText(line); ???QTextCursorcursor=ui->textEdit->textCursor(); ???cursor.movePosition(QTextCursor::Start,QTextCursor::MoveAnchor,1); } |
??????4在on_findButton_clicked()槽函數里,通過QTextEdit::find()方法可以查找在文本文件中的字符串。下面是代碼片段:
| voidTextFinder::on_findButton_clicked() { ???QStringsearchString=ui->lineEdit->text(); ???ui->textEdit->find(searchString,QTextDocument::FindWholeWords); } |
??????5 當這兩個方法都完成之后,在構造方法里添加一行代碼來調用loadTextFile(),代碼片段如下:
| TextFinder::TextFinder(QWidget*parent): ???QWidget(parent), ???ui(newUi::TextFinder) { ???ui->setupUi(this); ???//調用加載文件的方法 ???loadTextFile(); } |
??????on_findButton_clicked()槽函數將會被自動生成到ui_textfinder.h中下面的一行代碼調用:
| QMetaObject::connectSlotsByName(TextFinder); |
創建資源文件:
??????您需要一個資源文件(.qrc),這個資源文件嵌入了您輸入的文本文件。這個文本文件可以是任意添加了一段文本的.txt文件。創建一個叫做input.txt的文件,并且將它存儲在和源代碼所在的同級目錄里。
添加資源文件:
??????1選擇File (文件)> New File or Project(新建文件或項目) > Qt>Qt Resource File(Qt資源文件)> Choose;
選擇位置對話框如下:
??????2在名稱文本框中,鍵入textfinder
??????3在路徑文本框中,鍵入E:\Examples\TextFinder,點擊”下一步”或者”繼續”。項目管理對話框打開了:
??????4在”添加到項目”域,選擇TextFinder.pro,點擊完成。在代碼編輯器中打開這個.qrc文件.
5右擊textfinder.qrc,選擇右鍵菜單中的addPrefix
??????6在Prefix文本域里面,用斜線(/)替換掉默認的prefix.
|
|
|
??????7右擊textfinder.qrc,選擇右鍵菜單中的”添加現有文件”。然后定位到input.txt文件所在的位置,添加進去。
編譯和運行您的程序:
??????至此為止,您已經有了所有必要的文件,您可以點擊按鈕來編譯和運行您的程序了。截圖如下:
|
|
|
?
總結
以上是生活随笔為你收集整理的一步步创建Qt Widget项目+TextFinder案例(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 圆通金刚系统登录(圆通速递金刚系统)
- 下一篇: 1Nginx+fastdfs分布式文件存