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