QApplication Class
QApplication 类负责管理 GUI 应用程序的控制流和主要设置。更多内容...
| 头文件: | #include <QApplication> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 继承自: | QGuiApplication |
属性
|
|
公共函数
| QApplication(int &argc, char **argv) | |
| virtual | ~QApplication() |
| bool | autoSipEnabled() const |
| QString | styleSheet() const |
重新实现的公共函数
| virtual bool | notify(QObject *receiver, QEvent *e) override |
公共插槽
| void | aboutQt() |
| void | closeAllWindows() |
| void | setAutoSipEnabled(const bool enabled) |
| void | setStyleSheet(const QString &sheet) |
信号
| void | focusChanged(QWidget *old, QWidget *now) |
静态公共成员
| QWidget * | activeModalWidget() |
| QWidget * | activePopupWidget() |
| QWidget * | activeWindow() |
| void | alert(QWidget *widget, int msec = 0) |
| QWidgetList | allWidgets() |
| void | beep() |
| int | cursorFlashTime() |
| int | doubleClickInterval() |
| int | exec() |
| QWidget * | focusWidget() |
| QFont | font() |
| QFont | font(const QWidget *widget) |
| QFont | font(const char *className) |
| bool | isEffectEnabled(Qt::UIEffect effect) |
| int | keyboardInputInterval() |
| QPalette | palette(const QWidget *widget) |
| QPalette | palette(const char *className) |
| void | setCursorFlashTime(int) |
| void | setDoubleClickInterval(int) |
| void | setEffectEnabled(Qt::UIEffect effect, bool enable = true) |
| void | setFont(const QFont &font, const char *className = nullptr) |
| void | setKeyboardInputInterval(int) |
| void | setPalette(const QPalette &palette, const char *className = nullptr) |
| void | setStartDragDistance(int l) |
| void | setStartDragTime(int ms) |
| void | setStyle(QStyle *style) |
| QStyle * | setStyle(const QString &style) |
| void | setWheelScrollLines(int) |
| int | startDragDistance() |
| int | startDragTime() |
| QStyle * | style() |
| QWidget * | topLevelAt(const QPoint &point) |
| QWidget * | topLevelAt(int x, int y) |
| QWidgetList | topLevelWidgets() |
| int | wheelScrollLines() |
| QWidget * | widgetAt(const QPoint &point) |
| QWidget * | widgetAt(int x, int y) |
重新实现的受保护函数
| virtual bool | event(QEvent *e) override |
宏
详细说明
QApplication 通过实现QGuiApplication 接口,为基于QWidget 的应用程序提供了所需的功能。它负责处理控件特有的初始化和终结操作。
对于任何使用 Qt 的 GUI 应用程序,都恰好存在一个QApplication 对象,无论该应用程序在任何给定时刻拥有 0、1、2 个还是更多窗口。对于非基于QWidget 的 Qt 应用程序,请改用QGuiApplication ,因为它不依赖于QtWidgets 库。
某些GUI应用程序提供特殊的批处理模式,即通过命令行参数执行任务而无需人工干预。在此类非GUI模式下,通常只需实例化一个普通的QCoreApplication ,即可避免不必要地初始化图形用户界面所需的资源。以下示例展示了如何动态创建适当类型的应用程序实例:
QCoreApplication* createApplication(int &argc, char *argv[])
{
for (int i = 1; i < argc; ++i) {
if (!qstrcmp(argv[i], "-no-gui"))
return new QCoreApplication(argc, argv);
}
return new QApplication(argc, argv);
}
int main(int argc, char* argv[])
{
QScopedPointer<QCoreApplication> app(createApplication(argc, argv));
if (qobject_cast<QApplication *>(app.data())) {
// start GUI version...
} else {
// start non-GUI version...
}
return app->exec();
}可以通过instance()函数访问QApplication对象,该函数返回一个等同于全局qApp 指针的指针。
QApplication 的主要职责包括:
- 它根据用户的桌面设置(如palette()、font() 和doubleClickInterval())初始化应用程序。它会跟踪这些属性,以防用户通过某种控制面板等途径全局更改桌面设置。
- 它执行事件处理,即接收来自底层窗口系统的事件,并将它们分发给相关的控件。通过使用sendEvent() 和postEvent(),您可以向控件发送自定义事件。
- 它解析常见的命令行参数,并据此设置其内部状态。更多详细信息请参见下文的constructor documentation 。
- 它定义了应用程序的外观和风格,这些特性封装在一个QStyle 对象中。这可以通过setStyle() 在运行时进行更改。
- 它通过 `translate()` 方法提供用户可见字符串的本地化支持。
- 它提供了一些“神奇”的对象,例如clipboard()。
- 它了解应用程序的窗口。您可以使用widgetAt() 查询特定位置处的控件,通过topLevelWidgets() 和closeAllWindows() 获取相关列表等。
- 它负责管理应用程序的鼠标光标处理,参见setOverrideCursor()
由于 QApplication 对象负责大量初始化工作,因此必须在创建任何其他与用户界面相关的对象之前将其创建。QApplication 还处理常见的命令行参数。因此,通常建议在应用程序本身对argv 进行任何解析或修改之前先创建它。
| 函数组 | |
|---|---|
| 系统设置 | desktopSettingsAware(),setDesktopSettingsAware(),cursorFlashTime(),setCursorFlashTime(),doubleClickInterval(),setDoubleClickInterval(),setKeyboardInputInterval(),wheelScrollLines(),setWheelScrollLines(),palette(),setPalette(),font(),setFont(). |
| 事件处理 | exec()、processEvents()、exit()、quit()。sendEvent()、postEvent()、sendPostedEvents()、removePostedEvents()、notify()。 |
| GUI 样式 | style(),setStyle(). |
| 文本处理 | installTranslator(),removeTranslator()translate(). |
| 控件 | allWidgets(),topLevelWidgets(),activePopupWidget(),activeModalWidget(),clipboard(),focusWidget(),activeWindow(),widgetAt(). |
| 高级光标处理 | overrideCursor(),setOverrideCursor(),restoreOverrideCursor(). |
| 其他 | closeAllWindows(),startingUp(),closingDown(). |
另请参阅 QCoreApplication 、QAbstractEventDispatcher 、QEventLoop 以及QSettings 。
属性文档
autoSipEnabled : bool
切换自动显示 SIP(软件输入面板)的功能
将此属性设置为true ,可在进入接受键盘输入的小部件时自动显示SIP。此属性仅影响设置了WA_InputMethodEnabled属性的小部件,通常用于在按键极少或没有按键的设备上启动虚拟键盘。
该属性仅在使用软件输入面板的平台上生效。
默认值取决于平台。
访问函数:
| bool | autoSipEnabled() const |
| void | setAutoSipEnabled(const bool enabled) |
cursorFlashTime : int
该属性存储文本光标的闪烁时间(以毫秒为单位)
闪烁时间是指显示、反转和恢复光标显示所需的时间。通常,文本光标显示的时间为光标闪烁时间的一半,随后隐藏的时间也为该值的一半,但具体情况可能有所不同。
在 X11 环境中的默认值为 1000 毫秒。在 Windows 系统中,将使用Control Panel 的值,设置此属性将调整所有应用程序的光标闪烁时间。
我们建议控件不要缓存此值,因为如果用户更改全局桌面设置,该值可能会随时发生变化。
注意:该 属性可能包含负值,例如当光标闪烁被禁用时。
访问函数:
| int | cursorFlashTime() |
| void | setCursorFlashTime(int) |
doubleClickInterval : int
该属性存储以毫秒为单位的时限,用于区分双击与两次连续的鼠标点击
在 X11 环境下,默认值为 400 毫秒。在 Windows 和 Mac OS 系统中,则采用操作系统设定的值。
访问函数:
| int | doubleClickInterval() |
| void | setDoubleClickInterval(int) |
keyboardInputInterval : int
该属性存储用于区分单次按键与两次连续按键的时间间隔(以毫秒为单位)
在 X11 环境中,其默认值为 400 毫秒。在 Windows 和 Mac OS 系统中,则采用操作系统设定的值。
访问函数:
| int | keyboardInputInterval() |
| void | setKeyboardInputInterval(int) |
startDragDistance : int
此属性用于指定启动拖放操作所需的最小距离。
如果您的应用程序支持拖放功能,并且希望在用户按住按钮并将光标移动到一定距离后才开始拖放操作,则应将此属性的值作为所需的最小距离。
例如,如果点击时的鼠标位置存储在 `startPos ` 中,而当前位置(例如在鼠标移动事件中)为 `currentPos`,则可以通过如下代码判断是否应开始拖拽:
if ((startPos - currentPos).manhattanLength() >=
QApplication::startDragDistance())
startTheDrag();Qt 在内部使用该值,例如在 `QFileDialog` 中。
默认值(如果平台未提供其他默认值)为 10 像素。
访问函数:
| int | startDragDistance() |
| void | setStartDragDistance(int l) |
另请参阅 startDragTime()、QPoint::manhattanLength() 以及“拖放”。
startDragTime : int
该属性存储鼠标按钮必须按住的毫秒数,达到该时间后才会开始拖放操作
如果您的应用程序支持拖放功能,并且希望在用户按住鼠标按钮达到一定时间后才开始拖放操作,则应将此属性的值作为延迟时间。
Qt 也会在内部使用此延迟(例如在QTextEdit 和QLineEdit 中),以启动拖拽操作。
默认值为 500 毫秒。
访问函数:
| int | startDragTime() |
| void | setStartDragTime(int ms) |
另请参见 startDragDistance() 和拖放。
styleSheet : QString
该属性存储应用程序样式表
应用程序样式表适用于应用程序中的所有控件,此外还包括设置在各个控件上的任何样式表。有关级联规则,请参阅Qt 样式表。
设置此属性会用样式表样式替换应用程序样式,该样式将包裹当前的style ,此后每次更改都会重新渲染应用程序中的所有控件。请在显示第一个窗口之前设置一次样式表,且不要将其用于运行时切换主题。关于何时使用样式表,请参阅《Qt Widgets 的样式设计方法》。
如果该值为file:/// URL,Qt将从指定文件中加载样式表,并根据该文件的目录解析其中的相对URL(例如图像引用)。只有应用程序样式表接受file:/// URL;QWidget::styleSheet 不接受。
默认情况下,除非用户在运行应用程序时通过命令行指定了-stylesheet 选项,否则该属性为空字符串;该选项会将此属性设置为指定文件的file:/// URL。
访问函数:
| QString | styleSheet() const |
| void | setStyleSheet(const QString &sheet) |
另请参阅 QWidget::styleSheet 、setStyle()、Qt 样式表以及 Qt Widgets 的样式设置方法。
wheelScrollLines : int
该属性用于指定旋转鼠标滚轮时,控件滚动的行数。
如果该值超过控件的可见行数,则控件应将滚动操作解释为一次“向上 翻页”或“向下翻页”。如果控件是item view class ,则滚动一行所产生的效果取决于控件的scroll mode 设置。滚动一行可能表示scroll one item 或scroll one pixel 。
默认情况下,该属性的值为 3。
访问函数:
| int | wheelScrollLines() |
| void | setWheelScrollLines(int) |
另请参阅 QStyleHints::wheelScrollLines()。
成员函数文档
QApplication::QApplication(int &argc, char **argv)
初始化窗口系统,并使用argc 命令行参数在argv 中构建应用程序对象。
警告: argc 和argv 所引用的数据 必须在 QApplication 对象的整个生命周期内保持有效。此外,argc 必须大于零,且argv 必须至少包含一个有效的字符串。
全局指针qApp 指向此应用程序对象。应仅创建一个应用程序对象。
必须在初始化任何paint devices (包括控件、像素图、位图等)之前,先构造此应用程序对象。
注意: argc 和argv 可能会发生变化,因为 Qt 会移除其识别的命令行参数。
所有 Qt 程序都会自动支持以下命令行选项:
- -style= style,用于设置应用程序的 Qt GUI 样式。可用值取决于您的系统配置。如果您在编译 Qt 时添加了额外样式,或者通过插件引入了额外样式,这些样式将可通过
-style命令行选项使用。您还可以通过设置QT_STYLE_OVERRIDE环境变量,为所有 Qt 应用程序统一设置样式。 - -stylestyle,与上述功能相同。
- -stylesheet=stylesheet,用于设置应用程序的样式表。该值必须是包含样式表文件的路径。
注意: 样式表文件中的相对 URL 是相对于样式表文件路径而言的。
- -stylesheetstylesheet,与上述说明相同。
- -widgetcount,在程序结束时输出调试信息,显示尚未销毁的控件数量以及同时存在的控件最大数量
- -reverse,将应用程序的布局方向设置为Qt::RightToLeft
- -qmljsdebugger=,通过指定端口激活 QML/JS 调试器。该值必须采用 port:1234[,block] 的格式,其中 block 为可选参数,启用后应用程序将等待调试器连接。
另请参阅 QCoreApplication::arguments()。
[virtual noexcept] QApplication::~QApplication()
清理由该应用程序分配的任何窗口系统资源。将全局变量qApp 设置为nullptr 。
[static slot] void QApplication::aboutQt()
显示一个关于 Qt 的简单消息框。该消息包含应用程序所使用的 Qt 版本号。
这对于将其包含在应用程序的“Help ”菜单中非常有用,如“Menus”示例中所示。
该函数是QMessageBox::aboutQt() 的便捷槽。
[static] QWidget *QApplication::activeModalWidget()
返回当前活动的模态控件。
模态控件是一种特殊的顶级控件,它是QDialog 的子类,且在构造函数中将modal参数设为true。用户必须先关闭模态控件,才能继续执行程序的其他部分。
模态控件以栈的形式组织。该函数返回栈顶的当前活动模态控件。
另请参阅 activePopupWidget() 和topLevelWidgets()。
[static] QWidget *QApplication::activePopupWidget()
返回当前活动的弹出窗口小部件。
弹出控件是一种特殊的顶级控件,它设置了Qt::WType_Popup 控件标志,例如QMenu 控件。当应用程序打开一个弹出控件时,所有事件都会被发送到该弹出控件。在弹出控件关闭之前,无法访问普通控件和模态控件。
当显示一个弹出控件时,仅可打开其他弹出控件。弹出控件按栈结构组织。该函数返回位于栈顶的当前活动弹出控件。
另请参见 activeModalWidget() 和topLevelWidgets()。
[static] QWidget *QApplication::activeWindow()
返回拥有键盘输入焦点的应用程序顶级窗口;如果没有应用程序窗口拥有焦点,则返回nullptr 。即使没有focusWidget(),也可能存在activeWindow(),例如当该窗口中没有小部件接受键事件时。
另请参阅 QWidget::setFocus()、QWidget::hasFocus() 和focusWidget()。
[static] void QApplication::alert(QWidget *widget, int msec = 0)
如果窗口不是活动窗口,则会为widget 显示一个提示框。该提示框显示msec 毫秒。如果msec 为零(默认值),则提示框将无限期显示,直到窗口再次成为活动窗口为止。
目前,此函数在 Qt for Embedded Linux 上无任何作用。
在 macOS 上,此功能主要在应用程序层面上起作用,会导致应用程序图标在 Dock 中弹跳。
在 Windows 系统上,这会导致窗口的任务栏图标短暂闪烁。如果msec 为零,闪烁将停止,且任务栏图标会变为另一种颜色(目前为橙色)。
在 X11 环境下,这会使窗口被标记为“需要关注”,且窗口必须保持可见(即未调用 hide() 函数,但以某种形式显示出来),该功能才能生效。
[static] QWidgetList QApplication::allWidgets()
返回应用程序中所有小部件的列表。
如果没有小部件,则该列表为空(QList::isEmpty())。
注意:部分 小部件可能处于隐藏状态。
示例:
void updateAllWidgets()
{
const QWidgetList allWidgets = QApplication::allWidgets();
for (QWidget *widget : allWidgets)
widget->update();
}另请参阅 topLevelWidgets() 和QWidget::isVisible()。
[static] void QApplication::beep()
以默认音量和声音播放铃声。此功能在 Qt for Embedded Linux中不可用。
[static slot] void QApplication::closeAllWindows()
关闭所有顶级窗口。
对于拥有大量顶级窗口的应用程序,此函数特别有用。
窗口将按随机顺序关闭,直到某个窗口不响应关闭事件为止。当最后一个窗口成功关闭时,应用程序将退出,除非将quitOnLastWindowClosed 设置为false。若要通过菜单等方式触发应用程序终止,请使用QCoreApplication::quit() 代替此函数。
另请参阅 quitOnLastWindowClosed 、lastWindowClosed()、QWidget::close()、QWidget::closeEvent()、QCoreApplication::quit()、topLevelWidgets() 以及QWidget::isWindow()。
[override virtual protected] bool QApplication::event(QEvent *e)
重写了:QGuiApplication::event(QEvent *e)。
[static] int QApplication::exec()
进入主事件循环,并等待调用exit(),然后返回exit()中设置的值(如果通过quit()调用exit(),则该值为0)。
必须调用此函数才能启动事件处理。主事件循环从窗口系统接收事件,并将这些事件分发给应用程序控件。
通常,在调用 `exec()` 之前无法进行任何用户交互。作为特例,模态控件(如 `QMessageBox `)可在调用 `exec()` 之前使用,因为模态控件会自行调用 `exec()` 来启动本地的事件循环。
若要让应用程序执行空闲处理(即在无待处理事件时执行特定函数),请使用超时时间为 0ns 的QChronoTimer 。更高级的空闲处理方案可通过processEvents() 实现。
我们建议将清理代码连接到aboutToQuit() 信号上,而不是将其放入应用程序的main() 函数中。这是因为在某些平台上,QApplication::exec() 的调用可能不会返回。 例如,在 Windows 平台上,当用户注销时,系统会在 Qt 关闭所有顶级窗口后终止进程。因此,无法保证应用程序在调用 QApplication::exec() 之后,会有足够的时间退出其事件循环并执行main() 函数末尾的代码。
另请参阅 quitOnLastWindowClosed 、QCoreApplication::quit()、QCoreApplication::exit()、QCoreApplication::processEvents() 以及QCoreApplication::exec()。
[signal] void QApplication::focusChanged(QWidget *old, QWidget *now)
当拥有键盘焦点的控件从old 切换为now 时,会触发此信号,即用户按下了Tab键、单击了某个控件或切换了活动窗口时。无论是old 还是now ,其nullptr 都可能为 。
该信号是在两个控件均通过QFocusEvent 接收到变更通知后触发的。
另请参阅 QWidget::setFocus()、QWidget::clearFocus() 和Qt::FocusReason 。
[static] QWidget *QApplication::focusWidget()
返回当前拥有键盘输入焦点的应用程序控件;如果该应用程序中没有控件拥有焦点,则返回nullptr 。
另请参阅 QWidget::setFocus()、QWidget::hasFocus()、activeWindow() 以及focusChanged()。
[static] QFont QApplication::font()
返回应用程序的默认字体。
另请参阅 setFont()、fontMetrics() 和QWidget::font()。
[static] QFont QApplication::font(const QWidget *widget)
返回widget 的默认字体。如果widget 的类未注册默认字体,则返回其最近的已注册超类的默认字体。
这是一个重载函数。
另请参阅 fontMetrics()、setFont() 和QWidget::setFont()。
[static] QFont QApplication::font(const char *className)
返回给定className 中控件所使用的字体。
这是一个重载函数。
另请参阅 setFont() 和QWidget::font()。
[static] bool QApplication::isEffectEnabled(Qt::UIEffect effect)
如果启用了effect ,则返回true ;否则返回false 。
默认情况下,Qt 会尝试使用桌面设置。若要阻止此行为,请调用 setDesktopSettingsAware(false)。
注意: 在色彩深度低于 16 位的屏幕上,所有 特效均会被禁用。
另请参阅 setEffectEnabled() 和Qt::UIEffect 。
[override virtual] bool QApplication::notify(QObject *receiver, QEvent *e)
重写了:QGuiApplication::notify(QObject *object, QEvent *event)。
[static] QPalette QApplication::palette(const QWidget *widget)
如果传入了widget ,则返回该控件类的默认调色板。这可能与应用程序的调色板一致,也可能不一致。在大多数情况下,某些类型的控件没有专门的调色板,但有一个值得注意的例外:在 Windows 系统中,如果用户在显示设置中为菜单定义了特殊的背景颜色,则弹出菜单会使用该颜色。
另请参阅 setPalette() 和QWidget::palette()。
[static] QPalette QApplication::palette(const char *className)
返回指定className 的控件所用的配色方案。
这是一个重载函数。
另请参阅 setPalette() 和QWidget::palette()。
[static] void QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable = true)
如果 `enable ` 为真,则启用 UI 效果 `effect `;否则,该效果将不会被使用。
注意: 在色彩深度低于 16 位的屏幕上,所有 效果均被禁用。
另请参阅 isEffectEnabled()、Qt::UIEffect 以及setDesktopSettingsAware()。
[static] void QApplication::setFont(const QFont &font, const char *className = nullptr)
将应用程序的默认字体更改为font 。如果传入className ,则该更改仅适用于继承自className 的类(如QObject::inherits()所报告的那样)。
在应用程序启动时,默认字体取决于窗口系统。它可能因窗口系统版本和区域设置的不同而有所差异。此函数允许您覆盖默认字体;但覆盖可能并非明智之举,因为例如某些区域设置需要特大号字体来支持其特殊字符。
警告:请 勿将 此函数与Qt 样式表结合使用。应用程序的字体可通过“font”样式表属性进行自定义。若要为所有 QPushButton 设置粗体字体,请将应用程序的styleSheet() 设置为“QPushButton { font: bold }”
另请参阅 font()、fontMetrics() 和QWidget::setFont()。
[static] void QApplication::setPalette(const QPalette &palette, const char *className = nullptr)
将应用程序调色板更改为palette 。
如果传入className ,则该更改仅适用于继承className 的控件(如QObject::inherits()所报告)。如果className 设为0,则该更改将影响所有控件,从而覆盖之前设置的任何类特定配色方案。
色板可根据QStyle::polish() 中当前的 GUI 样式进行更改。
警告:请 勿将此函数与Qt 样式表结合使用。使用样式表时,可通过“color”、“background-color”、“selection-color”、“selection-background-color”和“alternate-background-color”自定义小部件的调色板。
注意:某些 样式并非在所有绘制操作中都使用配色方案,例如,当它们使用原生主题引擎时。Windows Vista 和 macOS 样式就是这种情况。
另请参阅 QWidget::setPalette()、palette() 和QStyle::polish()。
[static] void QApplication::setStyle(QStyle *style)
将应用程序的 GUI 样式设置为style 。样式对象的所有权将转移至QApplication ,因此当应用程序退出时,或者当设置了新样式而旧样式仍是应用程序对象的父样式时,QApplication 将删除该样式对象。
使用示例:
QApplication::setStyle(QStyleFactory::create("Fusion"));在切换应用程序样式时,调色板将恢复为初始颜色或系统默认颜色。这是必要的,因为某些样式必须调整调色板以完全符合风格指南。
在设置调色板之前(即在创建QApplication 之前)设置样式,将导致应用程序使用QStyle::standardPalette() 作为调色板。
另请参阅 style()、QStyle 、setPalette() 和desktopSettingsAware()。
[static] QStyle *QApplication::setStyle(const QString &style)
从QStyleFactory 获取style 的QStyle 对象。
该字符串必须是QStyleFactory::keys() 中的一个,通常为 “windows”、“windowsvista”、“fusion” 或 “macos” 之一。样式名称不区分大小写。
如果传入的style 未知,则返回nullptr ;否则,返回的QStyle 对象将被设置为应用程序的 GUI 样式。
警告:为确保 应用程序的样式设置正确,建议在可能的情况下,在调用QApplication 构造函数之前调用此函数。
这是一个重载函数。
[static] QStyle *QApplication::style()
返回应用程序的样式对象。
[static] QWidget *QApplication::topLevelAt(const QPoint &point)
返回位于指定point 位置的顶级控件;如果不存在该控件,则返回nullptr 。
[static] QWidget *QApplication::topLevelAt(int x, int y)
返回位于坐标点 (x,y) 处的顶级小部件;如果不存在该小部件,则返回 0。
这是一个重载函数。
[static] QWidgetList QApplication::topLevelWidgets()
返回应用程序中顶级控件(窗口)的列表。
注意:某些 顶级控件可能处于隐藏状态,例如,如果当前未显示工具提示,则工具提示控件即处于隐藏状态。
示例:
void showAllHiddenTopLevelWidgets()
{
const QWidgetList topLevelWidgets = QApplication::topLevelWidgets();
for (QWidget *widget : topLevelWidgets) {
if (widget->isHidden())
widget->show();
}
}另请参阅 allWidgets()、QWidget::isWindow() 和QWidget::isHidden()。
[static] QWidget *QApplication::widgetAt(const QPoint &point)
返回位于全局屏幕坐标point 处的小部件,如果该处没有Qt小部件,则返回nullptr 。
此函数可能运行较慢。
另请参阅 QCursor::pos()、QWidget::grabMouse() 和QWidget::grabKeyboard()。
[static] QWidget *QApplication::widgetAt(int x, int y)
返回位于全局屏幕位置(x ,y )处的控件,如果该位置没有 Qt 控件,则返回nullptr 。
这是一个重载函数。
宏文档
qApp
一个指向唯一应用程序对象的全局指针。它等同于QCoreApplication::instance(),但被强制转换为QApplication 指针,因此仅当唯一应用程序对象是QApplication 时才有效。
另请参阅 QCoreApplication::instance() 和qGuiApp 。
© 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.