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
中添加新的结果项。使用这个函数可以让我们的搜索内容高亮显示,正如前面我们的截屏一样。