Application

类介绍

        QApplication专门为QGuiApplication提供了一些基于QWidget的应用程序所需的功能,它能处理widget的初始化和终止化处理。对于任何使用Qt的Gui应用程序,无论应用程序在任何给定的时间是否具有0,1,2或者更多窗口,都只有一个QApplication对象。对于非基于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();
  }

        QApplication的主要职责范围:

  • 使用用户的桌面设置初始化应用程序,如palette(),font(),doubleClickInterval()等,并且跟踪这些属性,以防用户全局更改桌面。
  • 执行事件处理,从底层窗口系统接收事件,并派发到相关widget执行。
  • 解析常见命令行参数,并相应设置其内部状态。
  • 定义应用程序的外观,并封装在QStyle对象中,并且可以使用setStyle()修改。
  • 提供用户通过translate()看到字符串的本地化。
  • 提供一些特殊的部件处理,比如剪切板,桌面等。
  • 提供应用程序的窗口管理。
  • 提供应用程序鼠标光标等的管理。

        由于QApplication对象进行了大量的初始化,因此必须在创建与用户界面相关的任何其他对象之前创建它。QApplication还处理常见的命令行参数。因此,在应用程序本身对argv进行任何解释或修改之前创建它是一个非常好的方法。

函数组
分类函数名
 系统设置desktopSettingsAware(), setDesktopSettingsAware(), cursorFlashTime(), setCursorFlashTime(), doubleClickInterval(), setDoubleClickInterval(), setKeyboardInputInterval(), wheelScrollLines(), setWheelScrollLines(), palette(), setPalette(), font(), setFont(), fontMetrics().
事件处理exec(), processEvents(), exit(), quit(). sendEvent(), postEvent(), sendPostedEvents(), removePostedEvents(), hasPendingEvents(), notify().
GUI风格style(), setStyle().
文字处理installTranslator(), removeTranslator() translate().
widgets管理allWidgets(), topLevelWidgets(), desktop(), activePopupWidget(), activeModalWidget(), clipboard(), focusWidget(), activeWindow(), widgetAt().
鼠标光标处理overrideCursor(), setOverrideCursor(), restoreOverrideCursor().
杂项closeAllWindows(), startingUp(), closingDown().

属性

autoSipEnabled:bool

        切换自动SIP(软件输入面板)可见性。将此属性设置为true可在接受键盘输入的widget时自动显示SIP。此属性仅影响WA_InputMethodEnabled属性集的widget中,通常用于在键很少或者没有键的设备上启动虚拟键盘。默认情况取决于平台。

cursorFlashTime:int

        此属性保存文本光标的闪烁事件,单位毫秒。闪烁时间是显示,反转和恢复插入符号显示所需的时间。通常,文本光标会显示闪烁时间的一般,然后隐藏相同的时间,但是也有可能不一样。X11的默认值是1000毫秒。在windows上,使用控制面板的值,设置此属性可以设置所有应用程序的光标闪烁时间。这个属性也可能是负值,如果禁用光标闪烁的话。

doubleClickInterval:int

        此属性保持区分双击和连续两次单击鼠标的时间间隔。X11的默认值是400毫秒。在windows和Mac操作系统上,将使用操作系统的值。

globalStrut:QSize

        此属性保持用户可以与之交互的任何GUI元素应该具有的最小大小。例如:任何按钮的大小都不应小于globalStrut的大小。在触摸屏或类似I/O设备上使用GUI控件时,应该重新实现来考虑globalStrut大小。

keyboardInputInterval:int

        此属性保持区分一次按键和两次连续按键的时间限制,单位毫秒。X11默认值是400毫秒。在windows和Mac系统上,将使用操作系统的值。

startDragDistance:int

        如果希望在应用程序中支持拖放,并且希望在用户按住按钮将光标移动一定距离后启动施放操作,则应使用此属性值作为所需的最小距离。

startDragTime:int

        此属性保存在开始施放操作之前必须按住鼠标按钮的时间。如果你在应用程序中支持拖放,并且希望在用户按住鼠标一定时间后启动施放操作,则应使用此属性的值作为延迟。

        Qt也在内部使用此延迟,例如在QTextEdit和QLineEdit中,用于启动拖动。默认值为500毫秒。

styleSheet:QString

        此属性保存应用程序样式表。默认情况下,除非用户在运行程序时在命令行上指定-stylesheet选项,否则此属性返回一个空字符串。

wheelScrollLines:int

        当鼠标滚轮旋转时,此属性保存滚动小部件的行数。如果该值超过了widget的可见行数,则widget应将滚动操作解释为向上或向下翻页。如果widget是一个项目视图类,那么滚动一行的结果取决于widget滚动模式的设置。默认情况下,此属性值是3。

windowIcon:QIcon

        此属性保存默认窗口图标。

成员函数

[static slot] void QApplication::aboutQt()

        显示一个关于Qt的简单消息框。该消息包括应用程序正在使用的Qt的版本号。

[static] QWidget *QApplication::activeModalWidget()

        返回活动的模态的widget。

[static] QWidget *QApplication::activePopupWidget()

        返回活动的弹出窗口widget。

[static] QWidget *QApplication::activeWindow()

        返回具有键盘输入焦点的应用程序顶层窗口。如果没有应用程序窗口具有焦点,则返回0。

[static] void QApplication::alert(QWidget *widget, int msec = 0)

        如果窗口不是一个活动窗口,则会显示widget的警报。警报以毫秒为单位显示。如果毫秒为0,则警报无限期显示,直到窗口再次变为活跃状态。

[static] QWidgetList QApplication::allWidgets()

        返回应用程序中所有widget列表。

void updateAllWidgets()
 {
     foreach (QWidget *widget, QApplication::allWidgets())
         widget->update();
 }

[static] void QApplication::beep()

        使用默认音量和声音鸣响铃声。该功能在Qt for Embedded Linux下不可用。

[static slot] void QApplication::closeAllWindows()

        关闭所有顶级窗口。

[static] QDesktopWidget *QApplication::desktop()

        返回桌面widget(根窗口)。

[override virtual protected] bool QApplication::event(QEvent *e)

        重新实现。

[static] int QApplication::exec()

        开启事件循环。

[signal] void QApplication::focusChanged(QWidget *old, QWidget *now)

        当键盘焦点事件从一个widget变到另一个widget上,发出此信号。

[static] QWidget *QApplication::focusWidget()

        返回键盘焦点事件所在的widget,如果没有,则返回0。

[static] QFont QApplication::font()

        返回默认的应用程序字体。

[static] QFont QApplication::font(const QWidget *widget)

        这是一个重载函数,返回指定widget的字体。

[static] QFont QApplication::font(const char *className)

        这是一个重载函数,返回给定className名的widget的字体。

[static] QFontMetrics QApplication::fontMetrics()

        返回应用程序字体在屏幕上显示的宽度。

[static] bool QApplication::isEffectEnabled(Qt::UIEfffect effect)

        如果启用了该效果,返回true,否则返回false。默认情况下,Qt尝试使用桌面设置。为防止该情况发生,请调用setDesktopSettingsAware(false)。

[static] Qt::NavigationMode QApplication::navigationMode()

        返回Qt使用的焦点导航类型。此功念仅在Qt for Embedded Linux中可用。

[override virtual] bool QApplication::notify(QObject *receiver, QEvent *e)

        重写实现了QGuiApplication::notify函数。

[static] QPalette QApplication::palette(const QWidget *widget)

        返回widget的调色板。

[static] QPalette QApplication::palette(const char *className)

        返回指定名字className的widget的调色板。

[static] void QApplication::setActiveWindow(QWidget *active)

        设置active为响应系统事件的活跃窗口。

[static] void QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable = true)

        如果enable是true,则启动UIEffect的效果。

[static] void QApplication::setFont(const QFont &font, const char *className = nullptr)

        修改应用程序的默认字体为font。

[static] void QApplication::setNavigationMode(Qt::NavigationMode mode)

[static] void QApplication::setPalette(const QPalette &palette, const char *className = nullptr)

[static] void QApplication::setStyle(QStyle *style)

        将应用程序的GUI样式设置为style。样式对象的所有权将转移到QApplication,因此QApplication将在应用程序退出时删除样式对象。

[static] QStyle *QApplication::setStyle(const QString &style)

        从QStyleFactory中返回一个QStyle对象。字符串必须是QStyleFactory::keys()中的一个。样式名称不区分大小写。如果传递了未知样式,则返回nullptr。否则返回的QStyle对象将设置为应用程序的GUI样式。

[static] QStyle *QApplication::style()

        返回应用程序的样式对象。

[static] QWidgetList QApplication::topLevelWidgets()

        返回应用程序顶级窗口的列表。


  void showAllHiddenTopLevelWidgets()
  {
      const QWidgetList topLevelWidgets = QApplication::topLevelWidgets();
      for (QWidget *widget : topLevelWidgets) {
          if (widget->isHidden())
              widget->show();
      }
  }

[static] QWidget *QApplication::widgetAt(const QPoint &point)

        返回全局屏幕坐标point位置的widget。若没有widget则返回nullptr。

[static] QWidget *QApplication::widgetAt(int x, int y)

        返回全局屏幕坐标(x, y)位置的widget。若没有widget则返回nullptr。

qApp

        引用唯一应用程序对象的全局指针。等效于QCoreApplication::instance(),但是被转换为QApplication指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值