造輪子 QTreeWidget節點之精確搜尋

2021-07-23 23:21:12 字數 1892 閱讀 4578

由於專案需要對qtreewidget樹節點進行搜尋,所以就做了乙個精確搜尋樹節點文字的輪子。

一般搜尋方式有兩種:精確搜尋和模糊搜尋。下面我分兩部分說明,假設樹中節點文字有漢字、英文、數字。

-->精確搜尋搜尋框中輸入漢字時使用精確搜尋,我所設計的並不是嚴格意義上的精確搜尋。比如對於文字「東京不太熱miao」,輸入「京」、「太熱」、「不太熱mi」等關鍵字都能搜到,但是如果輸入「京東」那就不匹配了。

-->模糊搜尋

模糊搜尋也就是拼音搜尋,輸入漢字的拼音首字母就能搜到它,比如對於「東京不太熱miao」,輸入「djbtr」、「btr」、「trm」、「trm」等關鍵字都能搜到。我給拼音首字母搜尋加了點功能,就是輸入全拼時也能搜尋,但必須從第乙個漢字的拼音開始,比如「dongjingb」匹配,但是「jingbutaire」就不匹配了。

圖 1

圖 2

1.中英文及數字查詢

2.查詢節點路徑展示

3.背景顏色標記

實現**:

標頭檔案

#include "widget.h"

#include "ui_widget.h"

widget::widget(qwidget *parent) :

qwidget(parent),

ui(new ui::widget)

widget::~widget()

void widget::searchchild(qtreewidgetitem *citem, const qstring &txt)

else

searchchild(item, txt);

}}void widget::parentexpand(qtreewidgetitem *item)

parentexpand(pitem);

}}void widget::on_pushbutton_clicked()

return;

}if ( ! isemptytree)

#if 0

int count = ui->treewidget->toplevelitemcount();

for (int i =0; i < count; ++i) else

searchchild(citem, txt);

}#else

qtreewidgetitemiterator it(ui->treewidget);

while(*it)

}(*it)->setbackground(0,qt::green);

parentexpand(*it);

} else

it++;

}#endif

}void widget::on_lineedit_editingfinished()

main檔案

#include "widget.h"

造輪子之我見

味,因為自己就是那一小撮喜歡造輪子的人!自己錯了,錯在哪呢?浪費時間?那麼很快的把事做完了,再做點啥呢!自己是個人英雄主義麼。想出頭麼,想要更多的公升職,加薪 麼,想要譁眾取寵麼!困惑,苦悶,壓力,壓抑,接踵而來。今天看了篇文章 似乎不光自己由此困惑,很多人或者說很多想要做輪子或者 正在造輪子的人 ...

談談自己造輪子

寫下這篇文章,主要是對我近段時間工作的反思。對於一些程式設計師來說,喜歡自己造輪子可算是乙個很平常的事情,我想可能有如下原因 我不覺得造輪子不好,曾今很長一段時間我都認為造輪子是體現自己能力很好的一種方式,但是現在越來越覺得,不要過分的去造輪子。昨天,我需要對接amazon s3的儲存,官方沒有go...

C語言造輪子

double 數轉 uint64 t 四捨五入法 vs 中線程安全函式 sprintf sprintf s strtok strtok s gcc 中線程安全函式 strtok strtok r uint64 t doubletoull double a char p null,pp null ui...