zoukankan      html  css  js  c++  java
  • QApplication的用法

    QApplication的用法

    来源 https://blog.csdn.net/qq_21342281/article/details/85322927

    QApplication管理GUI程序的控制流和主要设置。

    QApplication包含窗口系统和其他来源处理过和发送过的主事件循环。它也处理应用程序的初始化和收尾工作,并提供对话管理。QApplication可以对系统和应用的大部分设置项进行设置。

    对于用Qt写的任何一个GUI应用,不管这个应用有没有窗口或多少个窗口,有且只有一个QApplication对象。

    而对于用Qt写的非GUI应用,则有且只有一个QCoreApplication对象,并且这个应用不依赖QtGui库。

    这个QApplication对象的指针可以通过instance()函数获取,它和一个全局指针--qApp等价。

    QApplication的主要功能是:

    1、使用所在桌面的参数例如调色板(palette())、字体(font())、双击间隔(doubleClickInterval())等信息初始化应用程序。当我们改变桌面的一些设置时,可以让应用程序的这些设置保持一致。

    2、QApplication从底层窗口系统接收事件,并通过sendEvent()或postEvent()发送给需要的窗口。

    3、通过解析命令行参数,来设置程序内部状态。

    4、在运行时,可以通过setStyle()函数来改变QApplication包含的一个QStyle对象,从而改变应用程序的外观。

    5、制定程序的颜色策略,详见setColorSpec()函数说明。

    6、通过translate()函数可以设置本地化的字符串。

    7、QApplication还包含一些非常方便的类,例如屏幕信息类(desktop())和剪切板类(clipboard())。

    8、QApplication包含所有窗口的信息,可以知道程序在屏幕上的位置(widgetAt()),顶层窗口列表(topLevelWidgets()),关闭所有窗口(closeAllWindows())等等。

    9、QApplication能够管理鼠标光标样式。参照setOverrideCursor();

    10、在Linux系统的中,它提供刷新和同步通讯流的函数,参看flushX()和syncX()。

    11、QApplication提供全面的与用户交互界面。当用户注销时,可以正常关闭;如果不能终止程序,它能取消关机进程;甚至可以保存程序全部状态。参看 isSessionRestored(),sessionId() and commitData() and saveState()

     既然QApplication做了这么多初始化工作,因此它必须在创建其他与用户界面相关的类之前创建。QApplication能够处理命令行参数,所以在想要处理命令行参数之前就要创建它。

    头文件:#include<QApplication>

    继承自:QCoreApplication

    一、公共函数

    1、QApplication::QApplication(int & argc,char ** argv)

    1.1、 使用在argv中包含的argc个命令行参数,初始化窗口系统及应用对象。

    1.2、有一个全局的指针app指向应用对象(QApplication)。并且只能创建一个QApplication对象。

    1.3、QApplication对象必须在绘制设备(设备包括窗口、像素映射、位图等)之前创建。

    1.4、Qt只将能够识别的命令行参数,赋值给argv及argc。可识别的命令行参数如下:

    1.5、Qt 命令行调试参数(如果Qt编译时没有加QT_DEBUG标记,则认为调试参数是无效的)

        -nograb:告诉Qt一定不会获取鼠标和键盘事件;

        -dograb:忽略-nograb选项功能,不管-nograb选项是否存在命令行参数中;

        -sync:只有在X11系统下有效,调试时和调试服务器保持同步;

    1.6、所有的Qt程序都支持如下的命令行参数:

        -style=风格:设置程序GUI风格。该值可以是关于主题、窗口等。如果你想在编译Qt时使用风格或者额外的关于风格插件,这个参数可以帮你实现。

        -style 样式:同上;

        -stylesheet = 样式表:设置程序样式表。这个参数必须是一个包含样式表的文件;

             注意:该文件中样式表的相对路径是相对该文件的。

        -stylesheet 样式表:同上;

        -session= 会话:从最近的会话中恢复程序。

        -session 会话:同上;

        -widgetcount:在程序崩溃时,打印崩溃前的几个窗口信息和最后同时存在的窗口数量。

        -reverse:设置程序自动布局方向从右到左,对文字的处理方向从右到左;

        -graphicssystem:设置场景窗口和QPixmaps可用的后台支持,有效的参数是raster和opengl

        -gmljsdebugger=,通过设置特殊的端口号,激活QML/JS调试器,端口号格式为:1234[,块],块是可选的参数。同时使程序等待一个调试器来连接。

    1.7、用于X11版本Qt的参数

         -display 显示:设置X显示,默认值是$DISPLAY

         -geometry 位置大小:设置第一个窗口显示的位置。

        -fn 或者-font 字体:设置程序字体。该参数必须是系统能够识别的。如果Qt程序配置了字体,该参数会被忽略;

        -bg或者-background 颜色:设置程序默认的背景色;

    2、QApplication::QApplication(int & argc,char ** argv, bool GUIenabled)

     如果GUIenabled为true,将创建一个GUI程序,否则创建一个控制台程序(没有用户界面的程序);

    在X11系统上,如果为false,程序将不会连接X服务器;

    3、QApplication::QApplication(int & argc,char ** argvType type)

     enum QApplication::Type

    ConstantValueDescription
    QApplication::Tty 0 a console application控制台程序
    QApplication::GuiClient 1 a GUI client application GUI客户端程序
    QApplication::GuiServer 2

    a GUI server application (for Qt for Embedded Linux)

    GUI服务器程序(用在嵌入式linux Qt) 和-qws作用相同

     4、QApplication::QApplication(Display * display,Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0)

         创建一个能够在一个已经开始工作的显示器上显示的程序,只在X11系统上有效,并且真彩色位深大于8比特每像素。

    5、QApplication::QApplication(Display * display,int & argc, char ** argv,Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0)

        同上;

    6、QApplication::QApplication(QApplication::QS60MainApplicationFactory factory,int & argc, char ** argv)

     用于塞班系统

    7、QApplication::~QApplication()

    清理程序所有窗口分配的资源;设置全局指针qApp为0;

    8、void QApplication::aboutQt()[static slot]  静态槽函数

     显示一个关于Qt版本等信息的消息对话框。

    9、void QApplication::aboutToReleaseGpuResources() [signal]信号

     只用在塞班系统中,当程序释放GPU资源时,触发该信号。

    10、void QApplication::aboutToUseGpuResources()  [signal]信号

    只用在塞班系统中,当程序使用GPU资源时,触发该信号。

    11、QWidget * QApplication::activePopupWidget()     [static]静态函数

          返回一个弹出窗口;弹出窗口是一个特殊的顶层窗口的(将窗口标志设置为Qt::WType_Popup)。当程序打开一个弹出窗口时,所有的事件都将发送给弹出窗口,其他窗口不能操作。

          如果已经有弹出窗口,再次弹出窗口时,这个窗口将被放入一个栈中,并返回栈顶的窗口。

    12、QWidget * QApplication::activeModalWidget()  [static]静态函数

         返回一个活动的模态窗口;模态窗口是一个特殊的顶层窗口,事件循环在模态窗口中,模态模式下不能操作其他窗口部件。

         所有的模态窗口被放入一个栈中,这个函数返回栈定的窗口。

    13、QWidget * QApplication::activeWindow() [static]静态函数

          返回一个有焦点的窗口顶层窗口,如果返回0,则代表应用程序没有焦点。

    14、void QApplication::alert(QWidget * widget,int msec = 0)

         向窗口发出警告,就像windows下任务栏中上的图标闪现状态。

    15、QWidgetList QApplication::allWidgets()[static]静态函数

           返回应用程序的所有窗口列表。

    16、void QApplication::beep()    [static]静态函数

          使用默认的音量和铃声,发出铃声。

    17、void QApplication::changeOverrideCursor(constQCursor & cursor)  [static]静态函数

         改变光标;使用该函数前必须先设置光标(setOverrideCursor)。

    18、QClipboard * QApplication::clipboard()    [static]静态函数

         返回一个只向全局粘贴板的指针。

    19、void QApplication::closeAllWindows()   [static slot]静态槽函数

         关闭所有顶层窗口;例如,文件菜单中的关闭按钮就与该槽链接。窗口的关闭顺序是随机的。默认情况下程序会在所有窗口关闭后退出,除非设置quitOnLastWindowClosed为false;

    20、int QApplication::colorSpec()    [static]静态函数

          返回最多可用的颜色总数。参见QApplication::setColorSpec().

    21、void QApplication::commitData(QSessionManager & manager)    [virtual]虚函数

         相关的QSessionManager希望应用保存所有数据。也就是,保存所有打开着的并且具有操作权限的文件。

    22、 void QApplication::commitDataRequest(QSessionManager & manager)  [signal]信号

          当QSessionManager向让程序保存数据时,发射该信号,当连接该信号时,应该使用 Qt::DirectConnection做为connect的第五个参数

     23、QDesktopWidget * QApplication::desktop()[static]静态函数

          返回桌面信息QDesktopWidget。

    24、bool QApplication::desktopSettingsAware()[static]静态函数

          如果Qt使用系统标准颜色、字体则返回真,否则返回假

    25、bool QApplication::event(QEvent * e)  [virtual protected]虚受保护函数

           QObject::event()的重新实现

    26、int QApplication::exec()

          进入主循环,知道exit()被调用。

    27、void QApplication::focusChanged(QWidget * old,QWidget * now)  [signal]信号

           焦点改变时,该信号出发。

    28、QWidget * QApplication::focusWidget()  [static]静态函数

           返回获得焦点的窗口。

    29、QFont QApplication::font()[static]静态函数

           返回程序默认的字体

    30、void QApplication::fontDatabaseChanged() [signal]信号

          当程序加载或删除字体时,发送该信号

    31、QFontMetrics QApplication::fontMetrics()[static]静态函数

          返回应用程序字体规格(长宽间距等参数)。

    32、QInputContext * QApplication::inputContext() const           [static]静态函数

         返回应用程序的输入法(软件盘)QInputContext:通过模拟发送按键事件,实现与键盘输入相同的效果。

    33、bool QApplication::isEffectEnabled(Qt::UIEffect effect)  [static]静态函数

            如果使用系统的设置(颜色字体等)则返回真,否则返回假。Qt::UIEffect :一个枚举,描述可用的UI效果。

    34、bool QApplication::isLeftToRight()[static]静态函数

           是否从左到右布局。

    35、bool QApplication::isRightToLeft()[static]静态函数

          是否从右到左布局。

    36、bool QApplication::isSessionRestored() const

          应用程序是否从最近一个会话中恢复。

    37、Qt::KeyboardModifiers QApplication::keyboardModifiers()

          返回当前修饰键的状态。

    38、void QApplication::lastWindowClosed()[signal]信号

           当最后一个窗口关闭时,发送该信号。

    39、Qt::MouseButtons QApplication::mouseButtons()

         返回当前鼠标按键

    41、QCursor * QApplication::overrideCursor()[static]静态函数

           返回光标

    42、QPalette QApplication::palette()[static]静态函数

           返回调色板

    43、QPalette QApplication::palette(constQWidget * widget)[static]静态函数

          返回窗口部件widget的调色板

    44、Qt::KeyboardModifiers QApplication::queryKeyboardModifiers()

           返回当前修饰键的状态。注意这是按键的实际状态,与keyboardModifiers不同

    45、void QApplication::restoreOverrideCursor()

         撤销上一次setOverrideCursor()操作

    46、void QApplication::setActiveWindow(QWidget * active)

          设置指定的窗口active为活动窗口,当不能使该窗口获得键盘焦点,若想获取键盘焦点可以使用QWidget::activateWindow()函数

    47、void QApplication::setColorSpec(int spec)

        设置颜色规格。

    48、void QApplication::setDesktopSettingsAware(bool on)

         是否使用系统标准设置参数,颜色字体等

    49、void QApplication::setFont(constQFont & font, const char * className = 0)

        设置字体,如果className给出,将设置指定类className的字体

    50、void QApplication::setGraphicsSystem(constQString & system)

         设置用于支持窗口部件和QPixmaps等图像的后端处理,有效的参数:native(本地)、raster(栅格)、opengl(OpenGL)

         以下方法设置图像后端,优先级从高到低:

         命令行:graphicssystem

         函数:QApplication::setGraphicsSystem

         环境变量:QT_GRAPHICSSYSTEM

         编译配置configure:graphicssystem

    51、void QApplication::setInputContext(QInputContext * inputContext)

        设置QInputContext

    52、void QApplication::setOverrideCursor(constQCursor & cursor)

        设置光标

    53、void QApplication::setPalette(constQPalette & palette, const char * className = 0)

        设置调色板

    54、void QApplication::setStyle(QStyle * style)

        设置程序风格

    55、void QApplication::syncX()

        在X11桌面系统中,同步X服务器

    56、QWidget * QApplication::topLevelAt(constQPoint & point)

         返回指定位置的顶层窗口

    57、QWidget * QApplication::topLevelAt(int x,int y)

        返回指定位置的顶层窗口

    58、QWidgetList QApplication::topLevelWidgets()

        返回窗口列表

    59、Type QApplication::type()

        返回程序类型:

    QApplication::Tty 0 a console application控制台程序
    QApplication::GuiClient 1 a GUI client application
    QApplication::GuiServer 2 a GUI server application (for Qt for Embedded Linux)

    60、QWidget * QApplication::widgetAt(constQPoint & point)

       返回指定位置的窗口部件

    61、QWidget * QApplication::widgetAt(int x,int y)

       返回指定位置的窗口部件

        -fg或者-foreground 颜色:设置程序默认的前景色;

        -btn或者-button 颜色:设置默认的按钮颜色;

        -name 名字:设置程序的名字;

        -title标题:设置程序的标题;

        -visual TrueColor:在8位显示屏上强制使用真彩色;

        -ncols 数字:在8位显示屏上,如果使用QApplication::ManyColor,则限制颜色的数量。如果参数为216,则使用6X6X6颜色体,其他值按2X3X1的比例使用;

        -cmap:让程序在8位显示屏上安装定制色图;

        -im:设置于服务器相关的输入方法(相当于设置X调试器XMODIFIERS的环境变量)

        -inputstyle:输入风格样式

    ================= End

  • 相关阅读:
    OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 241 为运算表达式设计优先级
    Java实现 LeetCode 241 为运算表达式设计优先级
    Java实现 LeetCode 241 为运算表达式设计优先级
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/12153179.html
Copyright © 2011-2022 走看看