zoukankan      html  css  js  c++  java
  • qt 启动参数 -qws

    运行嵌入式程序

    在嵌入式QT版本中,程序需要服务器或自己作为服务器程序。

    服务器程序构造的方法是构造一个QApplication::GuiServe类型的QApplication对象。或者使用-qws命令选项启动程序。

    Using a Single Display
    使用-qws选项

    using Mutiple Displays
    嵌入式版本中运行多个县市同时运行。两种方式可以实现,要么多次运行服务程序,要么使用read-mae Multi screen driver
    当多个服务程序运行时,每个程序必须使用-display选项指定显示驱动,或者使用QWS_DISPLAY环境变量来指定。
    服务程序运行时:
    ./mysecondserverapplication -qws -display "QVFb:2"
    客户程序运行时:
    ./myclientapplication -display "QVFb:2"

    若想在不同显示器移动应用程序,则只能通过Muti显示器实现。
    ./myserverapplication -qws -display "Multi: QVFb:0
    QVFb:1:offset=0,0 VNC:offset=640,0 :2"

    程序启动命令选项:
    -fn<font>         定义程序的字体,例如./myapplication -fn helvetica

    -bg<color>                设置程序默认背景颜色 例如./myapplication -bg blue,颜色名称必须能被QColor类构造函数识别

    -btn<color>                设置默认的按钮颜色,例如./myapplication -btn green 同样颜色必须被认识

    -fg<color>                设置foreground颜色,例如./myapplication -fg 'dark blue' 同上需被认识

    -name <objectname>    设置应用程序名字 例如./myapplication -name texteditapplication

    -title <title>        设置应用程序标题。./myapplication -title 'Text Edit'

    -geometry <width>x<height>+<Xoffset>+<Yoffset>
    设置窗口大小, ./myapplication -geometry 300x200+50+50

    -keyboard                    启动键盘

    -nokeyboard                关闭键盘

    -mouse                        启动鼠标

    -nomouse                    关闭鼠标

    -qws                            设置为服务程序

    -display                    设置显示器驱动

    -decoration<style>
    设置程序的风格,例如./myapplication -decoration windows,只支持windows default styled 

    QWSServer

    QT Embeded应用没有来严格的区分server和client进程,如果一个QT进程的启动参数中有-qws,那么这个进程就具有server管理功能,被称为QWS server,当然这个进程同样可以和其它的QT进程一样可以创建并显示widget,只有兼做server的功能而已。不带-qws这个参数就是QWS Client。因此任何一个基于QT的application都可以做QWS Server。当然QWS Server一定先于QWS Client启动,否则QWS Client将启动失败。

    QWS Server是一个server socket,QWS Client是一个client socket。QWS Client启动时会主动向QWS Server的server socket建立连接。而后就QWS Server通过这个socket传递QWSCommand和QWSEvent来管理QWS Client。

     这个所谓的server功能主要是由QWSServer对象来实现的。
         1.QWSServer的管理对象
         (1)keyboard设备和mouse设备
         keyboard和mouse是一个display系统的输入设备,在QT Embedded中,QWSServer会初始化keyboard和mouse设备,并对其管理。读取key事件和mouse事件,并传送给相应的应用程序。
         至于diplay系统中的显示设备screen,这不是由QWSServer统一管理的,为了提高效率,每个QT Client都可以打开这个设备,并向screen读写,以实现显示功能。但是每个QT client都向screen读写,屏幕会不会写乱了? 在QT中,这部分工作是由一个叫做QWSRegionManager的对角来管理的,以后再详细说明。

         (2)QWSClient
         看上去,QWSServer QWSClient这两个类应该组成一个c/s结构,实际上QWSServer代表一个server socket. 当QT Client连接到QWSServer的server socket时,QWSServer会产生一个client socket与QT Client的socket进行通讯。QWSClient看上去像一个stub对象,代表一个QT client进程。每个QT Client进程在QWS server进程都有相应的QWSClient。

         (3)QWSWindow
         QWSWindow对应于QT Client的toplevel widget。nontoplevel widget由于每个QT Client自行管理。所有toplevel widget需要接受QWS Server的管理,包括widget的focus,altitude,region等。

         (4)其它
         QWSServer管理的其它全局对象,还有QWSScreenSaver,QWSSoundServer等。

         2.QWSServer的初始化
         QWSServer的初始化是在QApplication的初始化过程中完成的,具体的流程如下:
         QApplication::construct-->qt_init-->QWSServer::startup
         QWSServer::startup是一个static函数,创建全局对象qwsServer.QWSServer的构造函数会依次初始化所管理的对象。

  • 相关阅读:
    [CareerCup] 13.7 Node Pointer 节点指针
    [LeetCode] Bulls and Cows 公母牛游戏
    [CareerCup] 13.6 Virtual Destructor 虚析构函数
    [CareerCup] 13.5 Volatile Keyword 关键字volatile
    [CareerCup] 13.4 Depp Copy and Shallow Copy 深拷贝和浅拷贝
    [CareerCup] 13.3 Virtual Functions 虚函数
    [CareerCup] 13.2 Compare Hash Table and STL Map 比较哈希表和Map
    [CareerCup] 13.1 Print Last K Lines 打印最后K行
    [CareerCup] 12.6 Test an ATM 测试一个自动取款机
    [LeetCode] Serialize and Deserialize Binary Tree 二叉树的序列化和去序列化
  • 原文地址:https://www.cnblogs.com/nanqiang/p/10945169.html
Copyright © 2011-2022 走看看