七、Qt Creator實現文字查詢
宣告:本文原創於yafeilinux的百度部落格,http://hi.baidu.com/yafeilinux 轉載請註明出處。
現在加上查詢選單的功能。因為這裡要涉及關於Qt Creator的很多實用功能,所以單獨用一篇文章來介紹。
以前都用設計器設計介面,而這次我們用程式碼實現一個簡單的查詢對話方塊。對於怎麼實現查詢功能的,我們詳細地分步說明了怎麼進行類中方法的查詢和使用。其中也將Qt Creator智慧化的程式碼補全功能和程式中函式的宣告位置和定義位置間的快速切換進行了介紹。
1.首先還是儲存以前的工程,然後再將其開啟。
我們發現Qt Creator預設的字型有點小,可以按下Ctrl鍵的同時按兩下+鍵,來放大字型。也可以選擇Edit->Advanced->Increase Font Size。
2.在mainwindow.h中加入#include
QLineEdit *find_textLineEdit; //宣告一個行編輯器,用於輸入要查詢的內容
在private slots中新增
void show_findText();
在該函式中實現查詢字串的功能。
3.我們進入查詢選單的觸發事件槽函式,更改如下。
void MainWindow::on_action_Find_triggered()
{
QDialog *findDlg = new QDialog(this);
//新建一個對話方塊,用於查詢操作,this表明它的父視窗是MainWindow。
findDlg->setWindowTitle(tr("查詢"));
//設定對話方塊的標題
find_textLineEdit = new QLineEdit(findDlg);
//將行編輯器加入到新建的查詢對話方塊中
QPushButton *find_Btn = new QPushButton(tr("查詢下一個"),findDlg);
//加入一個“查詢下一個”的按鈕
QVBoxLayout* layout = new QVBoxLayout(findDlg);
layout->addWidget(find_textLineEdit);
layout->addWidget(find_Btn);
//新建一個垂直佈局管理器,並將行編輯器和按鈕加入其中
findDlg ->show();
//顯示對話方塊
connect(find_Btn,SIGNAL(clicked()),this,SLOT(show_findText()));
//設定“查詢下一個”按鈕的單擊事件和其槽函式的關聯
}
這裡我們直接用程式碼生成了一個對話方塊,其中一個行編輯器可以輸入要查詢的字元,一個按鈕可以進行查詢操作。我們將這兩個部件放到了一個垂直佈局管理器中。然後顯示這個對話方塊。並設定了那個按鈕單擊事件與show_findText()函式的關聯。
5.下面我們開始寫實現查詢功能的show_findText()函式。
void MainWindow::show_findText()//“查詢下一個”按鈕的槽函式
{
QString findText = find_textLineEdit->text();
//獲取行編輯器中的內容
}
先用一個QString類的物件獲得要查詢的字元。然後我們一步一步寫查詢操作的語句。
6.在下一行寫下ui,然後直接按下鍵盤上的“<.>”或“.”,因為ui是指標物件,所以自動生成“->”號,而且彈出了ui中的所有部件名稱的列表。如下圖。
7.我們用向下的方向鍵選中列表中的textEdit。或者我們可以先輸入text,這時能縮減列表的內容。
8.如上圖我們將滑鼠放到textEdit上,這時便出現了textEdit的類名資訊,且後面出現一個F1按鍵。我們按下鍵盤上的F1,便能出現textEdit的幫助。
9.我們在幫助中向下拉,會發現這裡有一個find函式。
10.我們點選find,檢視其詳細說明。
11.可以看到find函式可以實現文字編輯器中字串的查詢。其中有一個FindFlags的引數,我們點選它檢視其說明。
12.可以看到它是一個列舉變數(enum),有三個選項,第一項是向後查詢(即查詢游標以前的內容,這裡的前後是相對的說法,比如第一行已經用完了,游標在第二行時,把第一行叫做向後。),第二項是區分大小寫查詢,第三項是查詢全部。
13.我們選用第一項,然後寫出下面的語句。
ui->textEdit->find(findText,QTextDocument::FindBackward);
//將行編輯器中的內容在文字編輯器中進行查詢
當我們剛打出“f”時,就能自動彈出textEdit類的相關屬性和方法。
可以看到,當寫完函式名和第一個“(”後,系統會自動顯示出該函式的函式原型,這樣可以使我們減少出錯。
14.這時已經能實現查詢的功能了。但是我們剛才看到find的返回值型別是bool型,而且,我們也應該為查詢不到字串作出提示。
if(!ui->textEdit->find(findText,QTextDocument::FindBackward))
{
QMessageBox::warning(this,tr("查詢"),tr("找不到 %1")
.arg(findText);
}
因為查詢失敗返回值是false,所以if條件加了“!”號。在找不到時彈出警告對話方塊。
15.到這裡,查詢功能就基本上寫完了。show_findText()函式的內容如下。
我們會發現隨著程式功能的增強,其中的函式也會越來越多,我們都會為查詢某個函式的定義位置感到頭疼。而在Qt Creator中有幾種快速定位函式的方法,我們這裡講解三種。
第一,在函式宣告的地方直接跳轉到函式定義的地方。
如在do_file_Load上點選滑鼠右鍵,在彈出的選單中選擇Follow Symbol under Cursor或者下面的Switch between Method Declaration/Definition。
這時系統就會自動跳轉到函式定義的位置。如下圖。
第二,快速查詢一個檔案裡的所有函式。
我們可以點選視窗最上面的下拉框,這裡會顯示本檔案中所有函式的列表。
第三,利用查詢功能。
1.我們先將滑鼠定位到一個函式名上。
2.然後選擇Edit->Find/Replace->Find Dialog。
3.這時會出現一個查詢對話方塊,可以看到要查詢的函式名已經寫在裡面了。
4.當我們按下Search按鈕後,會在查詢結果視窗顯示查詢到的結果。
5.我們點選第二個檔案。會發現在這個檔案中有兩處關鍵字是高亮顯示。
6.我們雙擊第二項,就會自動跳轉到函式的定義處。
文章講到這裡,我們已經很詳細地說明了怎樣去使用一個類裡面沒有用過的方法函式;也說明了Qt Creator中的一些便捷操作。可以看到,Qt Creator開發環境,有很多很人性化的設計,我們應該熟練應用它們。
在以後的文章中,我們不會再很詳細地去用幫助來說明一個函式是怎麼來的,該怎麼用,這些應該自己試著去查詢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22785983/viewspace-662981/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 實驗七: 查詢演算法的實現演算法
- Qt Creator匯入不同Qt版本QT
- Qt - Qt Creator下載與安裝QT
- Qt Creator 4.9 釋出QT
- QT creator使用筆記QT筆記
- QT Creator/QT Designer佈局自適應QT
- Qt Creator 原始碼學習筆記04,多外掛實現原理分析QT原始碼筆記
- Qt 實現文字輸入框,帶字數限制QT
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- Qt Creator 4.10 Beta版釋出QT
- python實現查詢糾錯Python
- mysql多表查詢如何實現MySql
- indexdb實現分頁查詢Index
- 折半查詢(C++實現)C++
- Laravel Query Builder 複雜查詢案例:子查詢實現分割槽查詢 partition byLaravelUI
- 【Qt 專欄】Qt Creator 的 git 配置 & 上傳到giteeQTGitee
- VNC打不開Qt Creator解決VNCQT
- QT Creator配置環境和安裝QT
- Java 查詢和高亮Word文字Java
- CAD如何進行文字查詢
- 使用QT creator實現一個五子棋AI包括GUI實現(8K字超詳細)QTAIGUI
- MySQL入門系列:查詢簡介(七)之組合查詢MySql
- 查詢賬單功能的實現
- jeefast實現科目成績查詢AST
- 實現 MyBatis 流式查詢的方法MyBatis
- PHP 實現二分查詢PHP
- [Hive]Hive實現抽樣查詢Hive
- 在Qt Creator中使用vcpkg:綜合指南QT
- Ubuntu上使用QT creator執行cuda程式UbuntuQT
- linux根據字尾查詢文字Linux
- 文字查詢程式c++primer12.32C++
- BST查詢結構與折半查詢方法的實現與實驗比較
- Qt中文字編輯器實現語法高亮功能(Qscitinlla)QT
- HTML + CSS + JS 利用郵編查詢 API 實現郵編查詢工具HTMLCSSJSAPI
- C# Winform ComboBox模糊查詢實現C#ORM
- django 動態查詢實現過程Django
- Spring Data JPA 實現聯表查詢Spring
- 如何實現引數級聯查詢
- 二分查詢(函式實現)函式