3.2K 
显示搜索结果
find 插件提供了一个叫做Find::SearchResultWindow的对象,用于显示搜索结果:

我们当然希望搜索结果在这个SearchResultWindow中显示。为了达到这一目的,我们需要再次修改HeaderFilter的代码:
struct HeaderFilterData
{
// ...
// Method to search and return the search window
Find::SearchResultWindow* searchResultWindow() {
if(m_searchResultWindow) {
return m_searchResultWindow;
}
ExtensionSystem::PluginManager* pm
= ExtensionSystem::PluginManager::instance();
m_searchResultWindow = pm->getObject();
return m_searchResultWindow;
}
private:
// ...
Find::SearchResultWindow *m_searchResultWindow;
};
// ...
void HeaderFilter::findAll(const QString &text, Find::FindFlags findFlags)
{
// ...
// Clear the current search results
d->searchResultWindow()->clearContents();
// Begin searching
QString includeline = "#include <" + text + ">";
// ...
}
void HeaderFilter::displayResult(int index)
{
Utils::FileSearchResultList results = d->watcher.future().resultAt(index);
Q_FOREACH(Utils::FileSearchResult result, results) {
d->searchResultWindow()->addResult(result.fileName,
result.lineNumber,
result.matchingLine,
result.matchStart,
result.matchLength);
}
} 注意,我们使用了addResult()这个函数来向SearchResultWindow中添加新的结果项。使用这个函数可以让我们的搜索内容高亮显示,正如前面我们的截屏一样。