文章目錄
- 創建一個基于Qt Widget的應用程序
- 創建Text Finder項目
- 素材文件
- 填補缺失的部分
- 設計用戶界面
- 完成頭文件
- 完成源文件
- 創建資源文件
- 編譯和運行程序
- 參考文章
創建一個基于Qt Widget的應用程序
本教程介紹如何使用Qt Creator創建一個小型Qt應用程序,名為Text Finder。它是Qt UI工具中Text Finder示例的簡化版本。應用程序的用戶界面是使用Qt Designer通過Qt小部件構建的。應用程序邏輯是通過使用代碼編輯器編寫的C++代碼。
創建Text Finder項目
-
選擇文件 > 新建文件或項目 > 應用程序 > Qt Widgets應用程序 > 選擇。
打開介紹和項目位置對話框。
-
在名稱字段中,輸入TextFinder。
-
在創建位置字段中,輸入項目文件的路徑。例如,
C:\Qt\examples
,然后點擊下一步(在Windows和Linux上)或繼續(在macOS上)。
打開套件選擇對話框。
-
選擇您的項目的構建和運行套件,然后點擊下一步或繼續。
注意:如果在工具 > 選項 > 套件(在Windows和Linux上)或Qt Creator > 首選項 >
套件(在macOS上)中只指定了一個套件,則會跳過此對話框。打開類信息對話框。
-
在類名字段中,輸入TextFinder作為類名。
-
在基類列表中,選擇QWidget作為基類類型。
注意:頭文件、源文件和表單文件字段會自動更新以匹配類的名稱。
-
點擊下一步或繼續。
打開項目管理對話框。
-
查看項目設置,并點擊完成(在Windows和Linux上)或完成(在macOS上)創建項目。
注意:項目將以編輯模式打開,并隱藏這些說明。要返回到這些說明,請打開幫助模式。
素材文件
TextFinder項目現在包含以下文件:
- textfinder.h
- textfinder.cpp
- main.cpp
- textfinder.ui
- textfinder.pro
.h
和.cpp
文件包含了必要的樣板代碼。.pro
文件是完整的。
填補缺失的部分
首先設計用戶界面,然后繼續填寫缺失的代碼。最后,添加查找功能。
設計用戶界面
- 在“項目”視圖中以編輯器模式雙擊打開textfinder.ui文件,啟動集成的Qt Designer。
- 將以下小部件拖放到表單中:
-
標簽(QLabel)
-
文本編輯框(QLineEdit)
-
按鈕(QPushButton)
請注意:要輕松定位小部件,請使用側邊欄頂部的搜索框。例如,要找到標簽小部件,開始鍵入“label”即可。
-
雙擊標簽小部件,輸入關鍵詞文本。
-
雙擊按鈕小部件,輸入查找文本。
-
在屬性窗格中,將對象名稱更改為findButton。
-
按下Ctrl+A(或Cmd+A)選擇小部件,點擊水平布局(或在Linux或Windows上按Ctrl+H,或在macOS上按Ctrl+Shift+H)應用水平布局(QHBoxLayout)。
-
拖放一個文本編輯框小部件(QTextEdit)到表單中。
-
選擇屏幕區域,點擊垂直布局(或按Ctrl+L)應用垂直布局(QVBoxLayout)。
應用水平和垂直布局確保應用程序界面適應不同的屏幕尺寸。
-
要在用戶按下查找按鈕時調用查找函數,可以使用Qt的信號和槽機制。當特定事件發生時,會發出一個信號,而槽是響應特定信號的函數。Qt小部件具有預定義的信號和槽,可以直接在Qt Designer中使用。要為查找函數添加一個槽:
- 右鍵點擊查找按鈕以打開上下文菜單。
- 選擇“轉到槽”> “clicked()”,然后選擇“確定”。
會在頭文件textfinder.h中添加一個私有槽on_findButton_clicked(),并在源文件textfinder.cpp中添加一個私有函數TextFinder::on_findButton_clicked()。
-
按下Ctrl+S(或Cmd+S)保存更改。
有關使用Qt Designer設計表單的更多信息,請參閱Qt Designer手冊。
完成頭文件
textfinder.h文件已經有必要的#include,一個構造函數,一個析構函數和Ui對象。你需要添加一個私有函數loadTextFile(),以讀取并顯示輸入文本文件的內容在QTextEdit中。
-
在編輯視圖的項目窗格中,雙擊打開textfinder.h文件進行編輯。
-
在private部分添加一個私有函數,在Ui::TextFinder指針后面,如下代碼片段所示:
private slots:void on_findButton_clicked();private:Ui::TextFinder *ui;void loadTextFile();
完成源文件
現在頭文件已經完成,轉到源文件textfinder.cpp。
-
在編輯視圖的項目窗格中,雙擊打開textfinder.cpp文件進行編輯。
-
添加代碼使用QFile加載文本文件,用QTextStream讀取,并使用QTextEdit::setPlainText()在textEdit中顯示它。如下代碼片段所示:
void TextFinder::loadTextFile(){QFile inputFile(":/input.txt");inputFile.open(QIODevice::ReadOnly);QTextStream in(&inputFile);QString line = in.readAll();inputFile.close();ui->textEdit->setPlainText(line);QTextCursor cursor = ui->textEdit->textCursor();cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 1);}
-
為了使用QFile和QTextStream,在textfinder.cpp中添加以下#include:
#include <QFile>#include <QTextStream>
-
對于on_findButton_clicked()槽函數,添加代碼提取搜索字符串,并使用QTextEdit::find()函數在文本文件中查找該字符串。如下代碼片段所示:
void TextFinder::on_findButton_clicked()
{
QString searchString = ui->lineEdit->text();
ui->textEdit->find(searchString, QTextDocument::FindWholeWords);
}
-
一旦這兩個函數都完成了,在構造函數中添加一行調用loadTextFile()的代碼,如下代碼片段所示:
TextFinder::TextFinder(QWidget *parent): QWidget(parent), ui(new Ui::TextFinder){ui->setupUi(this);loadTextFile();}
通過這行代碼,在uic生成的ui_textfinder.h文件中會自動調用on_findButton_clicked()槽函數:
QMetaObject::connectSlotsByName(TextFinder);
創建資源文件
你需要一個資源文件(.qrc),其中嵌入輸入文本文件。輸入文件可以是任何帶有文本段落的.txt文件。創建一個名為input.txt的文本文件,并將其存儲在textfinder文件夾中。
添加資源文件的步驟:
-
選擇文件 > 新建文件或項目 > Qt > Qt資源文件 > 選擇。
打開"選擇位置"對話框。
-
在名稱字段中輸入textfinder。
-
在路徑字段中,輸入
C:\Qt\examples\TextFinder
,然后點擊下一步或繼續。
打開"項目管理"對話框。
-
在"添加到項目"字段中,選擇TextFinder.pro,然后點擊完成或完成以在代碼編輯器中打開該文件。
-
選擇添加 > 添加前綴。
-
在前綴字段中,將默認前綴替換為斜杠(
/
)。 -
選擇添加 > 添加文件,以定位并添加input.txt。
編譯和運行程序
現在你已經擁有了所有必要的文件,點擊按鈕來編譯和運行你的程序。
參考文章
【Qt】Qt創建Qt Qt Widgets項目
用戶界面開發框架Qt 6.x入門級教程 - 創建基于Qt Widget的應用(一)