IFindFilter 类

class Core::IFindFilter

IFindFilter 类是扩展名实现的基础类,当用户选择 编辑 > 查找/替换 > 高级查找 时将被调用。 更多...

头文件 #include <coreplugin/find/ifindfilter.h>
继承 QObject

公共函数

virtual QWidget *createConfigWidget()
virtual QKeySequencedefaultShortcut() const
virtual QStringdisplayName() const = 0
virtual voidfindAll(const QString &txt, Utils::FindFlags findFlags) = 0
virtual QStringid() const = 0
virtual boolisEnabled() const = 0
virtual boolisReplaceSupported() const
virtual boolisValid() const
virtual voidreplaceAll(const QString &txt, Utils::FindFlags findFlags)
virtual voidrestore(const Utils::Store &s)
virtual Utils::Storesave() const
virtual boolshowSearchTermInput() const
virtual Utils::FindFlagssupportedFindFlags() const

信号

voiddisplayNameChanged()
voidenabledChanged(bool enabled)
voidvalidChanged(bool valid)

静态公共成员

const QList<Core::IFindFilter *>allFindFilters()
QStringdescriptionForFindFlags(Utils::FindFlags flags)
QPixmappixmapForFindFlags(Utils::FindFlags flags)

详细描述

此类的实现为“高级查找”对话框添加了一个额外的 作用域。这可以是任何需要用户提供基于文本的搜索词(可能包括搜索大小写敏感或使用正则表达式的查找标志)的搜索。现有作用域包括 所有项目,它从所有项目中的所有文件中进行搜索,以及 文件系统中的文件,其中用户提供要搜索的目录和文件模式。

{Search Results view with search criteria}

为了使用户能够使用您的搜索作用域,您需要实现此类,并在插件管理器中注册您的子类的实例。

向用户展示搜索结果的一种常见方式是使用共享的 搜索结果 标签页。

{Search Results view with search results}

如果您想实现一个基于文件的文本搜索的查找过滤器,应使用 Core::BaseTextFind,它已经实现了此类搜索的所有细节,只需您提供应搜索的文件名称的迭代器即可。

如果您想实现一个更专门的查找过滤器,则需要:

  • 在一个单独的线程中开始您的搜索
  • Core::ProgressManager知道这一情况,以便获取进度条和取消搜索的能力
  • 与共享的搜索结果面板接口,以显示搜索结果,处理用户点击搜索结果项的事件,以及可能处理搜索结果的全局替换。

幸运的是,QtConcurrent和搜索结果面板提供了实现框架,这相对容易实现,同时确保用户以一致的方式使用。

常见的模式是大致首先在基于QtConcurrent的函数中实现实际的搜索。这是一个将QFutureInterface<MySearchResult> &future作为第一个参数以及其他所需搜索信息作为附加参数的函数。它应该在QFutureInterface上设置有用的进度信息,定期检查future.isPaused()future.isCanceled(),并通过future.reportResult报告搜索结果(可能分块)。

在查找过滤器的find()replaceAll()函数中,获取共享的搜索结果窗口,启动一个新的搜索,并连接处理结果选择和替换操作的信号(有关详细信息,请参阅Core::SearchResultWindow类)。通过相应的QtConcurrent函数启动您的搜索实现。将返回的QFuture对象添加到Core::ProgressManager。在返回的QFuture对象上使用QFutureWatcher以接收搜索实现报告搜索结果时的信号,并将其添加到共享的搜索结果窗口。

成员函数文档

[静态] const QList<Core::IFindFilter *> IFindFilter::allFindFilters()

返回查找过滤器列表。

[虚拟] QWidget *IFindFilter::createConfigWidget()

返回包含此查找过滤器选项的额外控件的小部件。

该小部件将在“高级查找”对话框中的常用选项下显示。它将被重新父化并由查找插件删除。

[虚拟] QKeySequence IFindFilter::defaultShortcut() const

返回可以用来以预选过滤器或范围打开高级查找对话框的快捷键。

通常在这里返回一个空快捷键,用户仍然可以通过首选项选择并分配一个特定的快捷键到这个查找范围。

[静态] QString IFindFilter::descriptionForFindFlags(Utils::FindFlags 标志)

返回对查找标志标志的描述性文本标签。

[纯虚] QString IFindFilter::displayName() const

返回呈现给用户的查找过滤器或范围名称。

这是在范围选择组合框中出现的名称。始终返回一个可翻译的字符串。这就是说,对于返回值使用Tr::tr()

[signal] void IFindFilter::displayNameChanged()

当此查找过滤器的显示名称发生变化时,会发出此信号。

[signal] void IFindFilter::enabledChanged(bool enabled)

当此查找过滤器的启用状态发生变化时,会发出此信号。

[纯虚函数] void IFindFilter::findAll(const QString &txt, Utils::FindFlags findFlags)

当用户选择了此查找范围并启动了搜索时,会调用此函数。

您应该启动一个线程,实际使用给定的 findFlags(将其添加到 Core::ProgressManager 以显示进度条)来搜索 txt,并向用户展示搜索结果(使用 搜索结果 输出面板)。有关更多信息,请参阅此类描述、Core::ProgressManagerCore::SearchResultWindow 的说明。

另请参阅replaceAllCore::ProgressManagerCore::SearchResultWindow

[纯虚函数] QString IFindFilter::id() const

返回此查找过滤器的唯一字符串标识符。

通常应该是类似 "MyPlugin.MyFindFilter" 的内容。

[纯虚函数] bool IFindFilter::isEnabled() const

返回用户当前是否可以选择此查找过滤器。

此功能用于例如 当前项目 范围。如果用户没有打开项目,则范围被禁用。

另请参阅enabledChanged

[虚函数] bool IFindFilter::isReplaceSupported() const

返回查找过滤器是否支持搜索和替换。

默认值为 false,如果您希望查找过滤器支持全局搜索和替换,则覆盖此函数返回 true

[虚函数] bool IFindFilter::isValid() const

返回查找过滤器是否有效。

另请参阅validChanged

[静态] QPixmap IFindFilter::pixmapForFindFlags(Utils::FindFlags flags)

返回 flags 找到标志的图标。

[虚函数] void IFindFilter::replaceAll(const QString &txt, Utils::FindFlags findFlags)

如果您想支持搜索和替换,请覆盖此函数。

当用户选择了此查找范围并启动了搜索和替换时,会调用此函数。默认实现没有任何操作。

您应该启动一个线程,该线程实际使用给定的查找标志findFlags来搜索txt(将其添加到Core::ProgressManager以显示进度条)并将搜索结果显示给用户(使用Search Results输出面板)。有关更多信息,请参阅此类、Core::ProgressManagerCore::SearchResultWindow的描述。

另请参阅findAll(),Core::ProgressManagerCore::SearchResultWindow

[虚拟] void IFindFilter::restore(const Utils::Store &s)

从存储中恢复查找过滤器的设置s。存储中不存在设置应重置为默认值。默认实现不执行任何操作。

另请参阅save

[虚拟] Utils::Store IFindFilter::save() const

返回一个存储查找过滤器设置的Store以存储会话。不应保存默认值。默认实现返回一个空的存储。

另请参阅restore

[虚拟] bool IFindFilter::showSearchTermInput() const

返回查找过滤器是否想要显示搜索条款行编辑。

默认值为true,如果您的查找过滤器不想显示搜索条款行编辑,则重写此函数以返回false

[虚拟] Utils::FindFlags IFindFilter::supportedFindFlags() const

返回此查找过滤器支持的查找标志,如全文搜索或正则表达式。

根据返回的值,启用或禁用默认查找选项小部件。默认为Utils::FindCaseSensitivelyUtils::FindRegularExpression和Uitls::FindWholeWords。

[信号] void IFindFilter::validChanged(bool valid)

在此查找过滤器的有效状态改变时发出此信号。

©2024 The Qt Company Ltd. 文档贡献是各自所有者的版权。此处提供的文档是根据由自由软件基金会发布的GNU自由文档许可版1.3许可的。Qt和相应的标志是芬兰的Qt公司及其全球子公司和分支机构的商标。所有其他商标均为各自所有者的财产。