七、Qt Creator實現文字查詢

洛欣發表於2010-05-18

宣告:本文原創於yafeilinux的百度部落格,http://hi.baidu.com/yafeilinux 轉載請註明出處。

現在加上查詢選單的功能。因為這裡要涉及關於Qt Creator的很多實用功能,所以單獨用一篇文章來介紹。

以前都用設計器設計介面,而這次我們用程式碼實現一個簡單的查詢對話方塊。對於怎麼實現查詢功能的,我們詳細地分步說明了怎麼進行類中方法的查詢和使用。其中也將Qt Creator智慧化的程式碼補全功能和程式中函式的宣告位置和定義位置間的快速切換進行了介紹。

1.首先還是儲存以前的工程,然後再將其開啟。

我們發現Qt Creator預設的字型有點小,可以按下Ctrl鍵的同時按兩下+鍵,來放大字型。也可以選擇Edit->Advanced->Increase Font Size。

七、Qt Creator實現文字查詢

2.在mainwindow.h中加入#include 的標頭檔案包含,在private中新增

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()函式的關聯。

七、Qt Creator實現文字查詢

5.下面我們開始寫實現查詢功能的show_findText()函式。

void MainWindow::show_findText()//“查詢下一個”按鈕的槽函式

{

QString findText = find_textLineEdit->text();

//獲取行編輯器中的內容

}

先用一個QString類的物件獲得要查詢的字元。然後我們一步一步寫查詢操作的語句。

6.在下一行寫下ui,然後直接按下鍵盤上的“<.>”或“.”,因為ui是指標物件,所以自動生成“->”號,而且彈出了ui中的所有部件名稱的列表。如下圖。

七、Qt Creator實現文字查詢

7.我們用向下的方向鍵選中列表中的textEdit。或者我們可以先輸入text,這時能縮減列表的內容。

七、Qt Creator實現文字查詢

8.如上圖我們將滑鼠放到textEdit上,這時便出現了textEdit的類名資訊,且後面出現一個F1按鍵。我們按下鍵盤上的F1,便能出現textEdit的幫助。

七、Qt Creator實現文字查詢

9.我們在幫助中向下拉,會發現這裡有一個find函式。

七、Qt Creator實現文字查詢

10.我們點選find,檢視其詳細說明。

七、Qt Creator實現文字查詢

11.可以看到find函式可以實現文字編輯器中字串的查詢。其中有一個FindFlags的引數,我們點選它檢視其說明。

七、Qt Creator實現文字查詢

12.可以看到它是一個列舉變數(enum),有三個選項,第一項是向後查詢(即查詢游標以前的內容,這裡的前後是相對的說法,比如第一行已經用完了,游標在第二行時,把第一行叫做向後。),第二項是區分大小寫查詢,第三項是查詢全部。

13.我們選用第一項,然後寫出下面的語句。

ui->textEdit->find(findText,QTextDocument::FindBackward);

//將行編輯器中的內容在文字編輯器中進行查詢

當我們剛打出“f”時,就能自動彈出textEdit類的相關屬性和方法。

七、Qt Creator實現文字查詢

可以看到,當寫完函式名和第一個“(”後,系統會自動顯示出該函式的函式原型,這樣可以使我們減少出錯。

七、Qt Creator實現文字查詢

14.這時已經能實現查詢的功能了。但是我們剛才看到find的返回值型別是bool型,而且,我們也應該為查詢不到字串作出提示。

if(!ui->textEdit->find(findText,QTextDocument::FindBackward))

{

QMessageBox::warning(this,tr("查詢"),tr("找不到 %1")

.arg(findText);

}

因為查詢失敗返回值是false,所以if條件加了“!”號。在找不到時彈出警告對話方塊。

七、Qt Creator實現文字查詢

15.到這裡,查詢功能就基本上寫完了。show_findText()函式的內容如下。

七、Qt Creator實現文字查詢
七、Qt Creator實現文字查詢

我們會發現隨著程式功能的增強,其中的函式也會越來越多,我們都會為查詢某個函式的定義位置感到頭疼。而在Qt Creator中有幾種快速定位函式的方法,我們這裡講解三種。

第一,在函式宣告的地方直接跳轉到函式定義的地方。

如在do_file_Load上點選滑鼠右鍵,在彈出的選單中選擇Follow Symbol under Cursor或者下面的Switch between Method Declaration/Definition。

七、Qt Creator實現文字查詢

這時系統就會自動跳轉到函式定義的位置。如下圖。

七、Qt Creator實現文字查詢

第二,快速查詢一個檔案裡的所有函式。

我們可以點選視窗最上面的下拉框,這裡會顯示本檔案中所有函式的列表。
七、Qt Creator實現文字查詢

第三,利用查詢功能。

1.我們先將滑鼠定位到一個函式名上。

七、Qt Creator實現文字查詢

2.然後選擇Edit->Find/Replace->Find Dialog。

七、Qt Creator實現文字查詢


3.這時會出現一個查詢對話方塊,可以看到要查詢的函式名已經寫在裡面了。

七、Qt Creator實現文字查詢

4.當我們按下Search按鈕後,會在查詢結果視窗顯示查詢到的結果。

七、Qt Creator實現文字查詢

5.我們點選第二個檔案。會發現在這個檔案中有兩處關鍵字是高亮顯示。
七、Qt Creator實現文字查詢

6.我們雙擊第二項,就會自動跳轉到函式的定義處。
七、Qt Creator實現文字查詢
文章講到這裡,我們已經很詳細地說明了怎樣去使用一個類裡面沒有用過的方法函式;也說明了Qt Creator中的一些便捷操作。可以看到,Qt Creator開發環境,有很多很人性化的設計,我們應該熟練應用它們。

      在以後的文章中,我們不會再很詳細地去用幫助來說明一個函式是怎麼來的,該怎麼用,這些應該自己試著去查詢。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22785983/viewspace-662981/,如需轉載,請註明出處,否則將追究法律責任。

相關文章