本页内容

QWhatsThis Class

QWhatsThis 类为任何小部件提供简要说明,即回答“这是什么?”这个问题。更多内容...

头文件: #include <QWhatsThis>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets

静态公共成员

QAction *createAction(QObject *parent = nullptr)
void enterWhatsThisMode()
void hideText()
bool inWhatsThisMode()
void leaveWhatsThisMode()
void showText(const QPoint &pos, const QString &text, QWidget *w = nullptr)

详细说明

“这是什么?”帮助是应用程序在线帮助系统的一部分,为用户提供有关特定控件的功能和用法信息。“这是什么?”帮助文本通常比tooltips 更长、更详细,但提供的信息一般少于单独的帮助窗口。

QWhatsThis 提供一个单独的窗口,其中包含说明性文本,当用户询问“这是什么?”时,该窗口会弹出。 用户提出该问题的默认方式是将焦点移至相关控件并按下 Shift+F1。帮助文本会立即显示;一旦用户执行其他操作,该文本即会消失。(请注意,如果存在 Shift+F1 的快捷键,此机制将无法生效。) 某些对话框提供一个“?”按钮,用户点击该按钮即可进入“这是什么?”模式;随后点击相关控件即可弹出“这是什么?”窗口。此外,还可以提供菜单选项或工具栏按钮来切换至“这是什么?”模式。

要向控件或操作添加“这是什么?”文本,只需调用QWidget::setWhatsThis() 或QAction::setWhatsThis()。

该文本可以是富文本或纯文本。如果指定了富文本格式的字符串,系统将使用默认样式表进行渲染,从而可以在显示的文本中嵌入图片。为了尽可能提高速度,默认样式表采用一种简单的方法来判断文本是否可以作为纯文本渲染。详情请参阅Qt::mightBeRichText()。

newAct = new QAction(tr("&New"), this);
newAct->setShortcut(tr("Ctrl+N"));
newAct->setStatusTip(tr("Create a new file"));
newAct->setWhatsThis(tr("Click this option to create a new file."));

进入“这是什么?”模式的另一种方法是调用createAction(),并将返回的QAction 添加到菜单或工具栏中。通过调用此上下文帮助操作(如下图所示,带有箭头和问号图标的按钮),用户即可切换到“这是什么?”模式。 此时,如果用户点击某个控件,系统将显示相应的帮助文本。当提供帮助后或用户按下 Esc 键时,将退出该模式。

“这是什么?”模式(适用于“新建文件”按钮)

您可以通过enterWhatsThisMode()以编程方式进入“这是什么?”模式,使用inWhatsThisMode()检查当前模式,并通过leaveWhatsThisMode()返回正常模式。

若需手动控制控件的“这是什么?”行为,请参阅Qt::WA_CustomWhatsThis 。

此外,还可以通过使用类型为QEvent::WhatsThis 的QHelpEvent ,为小部件的不同区域显示不同的帮助文本。在小部件的QWidget::event() 函数中拦截帮助事件,并调用QWhatsThis::showText(),传入您希望在QHelpEvent::pos() 中指定的位置显示的文本。 如果文本为富文本且用户点击了链接,控件还会收到一个QWhatsThisClickedEvent ,其中包含作为QWhatsThisClickedEvent::href()的链接引用。如果处理了QWhatsThisClickedEvent (即QWidget::event()返回true),则帮助窗口将保持可见。调用QWhatsThis::hideText()可显式将其隐藏。

另请参阅 QToolTip 。

成员函数文档

[static] QAction *QWhatsThis::createAction(QObject *parent = nullptr)

返回一个现成的QAction ,用于通过给定的parent 调用“这是什么?”上下文帮助。

返回的QAction 提供了一种便捷的方式,让用户进入“这是什么?”模式。

[static] void QWhatsThis::enterWhatsThisMode()

此函数将用户界面切换至“这是什么?”模式。用户界面可由用户手动切换回正常模式(例如通过点击或按下 Esc 键),也可通过调用leaveWhatsThisMode() 函数以编程方式切换。

进入“这是什么?”模式时,会向所有顶级小部件发送一个类型为 Qt::EnterWhatsThisMode 的QEvent 信号。

另请参阅 inWhatsThisMode() 和leaveWhatsThisMode()。

[static] void QWhatsThis::hideText()

如果当前显示着“这是什么?”窗口,此操作将关闭该窗口。

另请参阅 showText()。

[static] bool QWhatsThis::inWhatsThisMode()

如果用户界面处于“这是什么?”模式,则返回true ;否则返回false 。

另请参阅 enterWhatsThisMode()。

[static] void QWhatsThis::leaveWhatsThisMode()

如果用户界面处于“这是什么?”模式,此函数将切换回正常模式;否则不执行任何操作。

退出“这是什么?”模式时,会向所有顶级小部件发送一个类型为 Qt::LeaveWhatsThisMode 的QEvent 。

另请参阅 enterWhatsThisMode() 和inWhatsThisMode()。

[static] void QWhatsThis::showText(const QPoint &pos, const QString &text, QWidget *w = nullptr)

以“这是什么?”窗口的形式显示text ,其全局坐标为pos 。可选的 widget 参数w 用于在多显示器系统中确定相应的屏幕。

另请参阅 hideText()。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.