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)

详细说明

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

当用户问 "这是什么?"时,QWhatsThis 会弹出一个带有说明文字的窗口。用户提问的默认方式是将焦点移至相关 widget,然后按下 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() 返回正常模式。

如果要手动控制 widget 的 "这是什么?"行为,请参阅Qt::WA_CustomWhatsThis

您还可以使用QHelpEvent 类型的QEvent::WhatsThis ,为 widget 的不同区域显示不同的帮助文本。在 widget 的QWidget::event() 函数中拦截帮助事件,然后调用QWhatsThis::showText() 并在QHelpEvent::pos() 中指定的位置显示想要显示的文本。如果文本是富文本,并且用户点击了链接,那么 widget 也会收到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 会发送到所有顶级 widget。

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

[static] void QWhatsThis::hideText()

如果正在显示 "这是什么?"窗口,则会将其销毁。

另请参阅 showText()。

[static] bool QWhatsThis::inWhatsThisMode()

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

另请参阅 enterWhatsThisMode() 。

[static] void QWhatsThis::leaveWhatsThisMode()

如果用户界面处于 "What's This?"(这是什么)模式,该函数就会切换回正常模式;否则它什么也不做。

当离开 "What's This?"模式时,一个类型为 Qt::LeaveWhatsThisMode 的QEvent 会发送给所有顶级 widget。

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

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

text 显示为 "这是什么?"窗口,位于全局位置pos 。可选的 widget 参数w 用于确定多头系统上的适当屏幕。

另请参阅 hideText() 。

© 2025 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.