原文链接如下:

http://blog.chinaunix.net/uid-25223983-id-90838.html

作为一个QT项目的负责人,你总是不得不经常面临这样的情况:

你们的团队接到了一个任务,然后你把这个任务细分为具体的模块,然后你的组员们顺利的完成了你布置的任务。他们做好了模块,然后提交给你了。现在,轮到你把他们的模块合并成一个程序了……

这网网是很困难的,原因是:

1,  每个人所做的模块都有自己的界面,你在总的程序中要设计和定义好什么时候,在什么位置,谁的模块会生效?

2,  不同人的模块会有不同的功能和操作,你如何布置与此操作对应的按钮,这些按钮和时出现,何时被激活?

3,  怎么让他们的模块和主程序完美的融合,某个按钮的隐藏不会造成整个布局混乱?

4,  工程文件是混乱的么?是不是分不清哪里是谁做的?

所有的答案,就在QT设计师里,使用QT设计师的Promte to功能配合QT的强大信号和插巢功能,让你的类轻松自由的进化成你想要的样子,当然也可以进化成你的组员提交给你的模块……

我们以一个具体的工程来讲解:

A同学负责制作一个显示模块,这个模块是一个日历(随便定的,只是为了演示方便)
       B同学负责制作一个统计模块,这个模块有一个计数器和一个数字输入框(QspinBox)

你来把这两个部分和在一起,不能影响布局的基础上尽量使界面美观。

首先是A同学的模块,我们很快就可以做好:

我们可以看到生成的工程是以Student_A的名字命名的,对应的类名,头文件(.h),源文件(.cpp)以及窗体(.ui)文件均是以stua_widget来命名。表示这个类是继承字Qwidget,由studentA负责开发。

然后就是托控件了,也很简单……

我们可以加一个布局(Qlayout),以适应拉伸或者压缩。

      然后就成功了,编译,把它提交给你的组长吧。

同理可以制作StudentB的模块:

跟刚才一样,这里不再赘述……

做好了,是这个样子的:

然后是主工程,由负责人CG创建:

首先建好工程:

      然后是界面,可以使用一个QstackWidget以避免不同的模块与对应按钮之间互不干扰,一会还会在说……,是这个样子:

有人也许会问:啊?你放东西了么?为什么我什么也看不到?呵呵,如果你观察的够自己的话,就会发现右上角有一个向左右的箭头:其实我不仅放了一个QstackWidget,我还为这个Widget做了一个布局。不信你看:

这个StackWidget有两页,每个页都有自己的Qwidget,这个是非常科学的。因为所有的QT GUI类,包括窗体部件和QmainWindow都是直接或者间接的继承自Qwidget!而我们今天要做的就是让这两个Qwidget进化,进化为StudentA和StudentB制作的模块——也就是这个帖子的重点了:

首先我们要把StudentA和StudentB工作的成果添加到工程中来:

打开这个工程所在的文件夹,将StudentA和StudentB的工程(连文件夹一起拷贝过来):

然后在工程文件中添加需要的文件, 除了main.cpp不用添加以外(因为一个工程只能有一个main)其余看你的需要,如果你需要在主工程中也能编辑StudentA和StudentB的模块可以把Ui也添加进来

(到时候CG工程在编译的过程中会重新生成ui_StudentA.h和  ui_StudentB.h,这是后话,不表……),于是就变成了这样:

我们可以看到,哪个文件,是谁写的在我们的工程中一目了然,并且也可编辑,由于文件存在于工程文件中,所以Gcc在编译的时候也会重新根据我们的更改来编译这些文件。

好了,终于到了今天最有趣的地方了,准备好享受编程的乐趣了么?

让我们的类进化吧!!!

第一步,选中pageone这个Qwidget,鼠标右键,promote to:

第二步,填入信息:

Base class就选择Qwidget

Promote to class要输入StudentA和StudentB在他们的头文件(.h)文件中定义的类名(不要敲错了哦!):

     最后是头文件的位置:当然是Student_A文件夹下的stua_widget.h啊,因为那个文件就在那里呆着嘛(好像是废话……):

总之就是这样,先点Add按钮,一个可进化类就做好了,选中它点promote就行了:

哈哈,就这么简单,看看你原来是Qwidget的page变成什么了:

并且你一编译,就会奇迹般的发现StudentA做的日历已经乖乖的躺在你QstackWidget的page里啦:

同理可以在QstackWidget中加入B同学的模块,并且你可以在主工程中直接对A,B两位同学的模块进行修改。你做的改动会被Gcc编译器重新编译。(这主要是你可以在他们的类中写一些插巢,然后在你的类也就是cg_widget初始化的时候去绑定这些巢,这样就可以向A,B这两个类发送消息完成类之间的通信了,哈哈……

最后补充说点QstackWidget的页面切换吧:

使用这个代码可以在程序中去改变当前的页:

你可以在主面板上做一个按钮,通过绑定信号和插巢来分页来切换分页。当然插巢中应该有的代码,自然是上句啦,嘿嘿,好了,今天就说道这吧,好好利用这个功能,把大家的努力整合在一起,以更高效的进行开发,这个项目负责人应该掌握的,自己好好体会吧……

QT项目负责人必须掌握的Ui设计师功能——Promote to !相关推荐

  1. 【QT】Qt项目demo:数据在ui界面上显示,鼠标双击可弹窗显示具体信息

    一.项目总览 二.运行结果 I.鼠标单击 II.鼠标双击 三.源文件代码 1.RecData.pro #------------------------------------------------ ...

  2. ui设计师与开发人员对接总结

    ui设计与程序开发适配问题 适配关系(单位转换) 对接过程 项目初期的设计阶段: ui设计师使用Axure,以px(像素)为单位 开发人员使用android studio开发以dp(主要)为单位 (注 ...

  3. web前端项目实例网站_招聘 | 北京 | tSynsth系联设计 建筑设计师 / 室内设计师 / 项目负责人 / WEB前端开发工程师 / 实习生...

    关于我们 系联设计(Tuning Synesthesia ,tSynsth, TS)是一支由多元背景的设计师与软件工程师组成的国际团队,致力于想法与过程让设计 "可持续". 系联专 ...

  4. UI设计师,作品集该怎么做?场景展示样机更具专业性

    作品集的重要性 作品集是衡量一位设计师能力占比很重要的一部分,从作品集里可以看到你对审美.技法.理论掌握程度,还有对所经历项目的复盘.整合的拿捏程度:当然,从上面三个词还能细化,比如审美可以分为选择图 ...

  5. Qt项目的新首席维护人员

    New Chief Maintainer for the Qt Project Qt项目的新首席维护人员 Monday June 20, 2022 by Lars Knoll | Comments ​ ...

  6. Qt创建项目:手把手创建第一个Qt项目

    上一节介绍了QtCreator编辑器的页面长什么样子,以及都有哪些功能区,每个功能区都是用来做什么的.这一节我就手把手带大家创建一个Qt项目. 创建项目 点击新建按钮 创建项目有两个入口,一个是在欢迎 ...

  7. 平面设计师和ui设计师_平面设计师的10条意外职业道路

    平面设计师和ui设计师 Although the first printing press was invented back in 1450, modern graphic design came ...

  8. UI设计师这样面试更容易成功

    最基本的.专业的UI设计能力: 你到一个公司面试,出于礼貌,都会和你聊聊,但有没有机会进行下一轮面试和聊天,UI设计能力是基本的,这个是在这个行业内最基本的能力,无论是对主管.高级UI设计师.资深UI ...

  9. UI培训分享:UI设计师要掌握哪些知识点

    UI设计师除了要学会自己所在行业的技术之外,还要了解一些其他的知识点,这些知识点都会在今后的工作中带来帮助,甚至是加分项,那么下面来看看小编为大家介绍的UI培训分享:UI设计师要掌握哪些知识点? UI ...

  10. UI设计师面试如何操作才能获得高薪

    UI设计师在近几年是非常吃香的,求职招聘网站上对于UI设计师的要求也越来越高,那么在面试的过程中UI设计师面试如何操作才能获得高薪呢?来看看下面的详细解析. UI设计师面试如何操作才能获得高薪? 1. ...

最新文章

  1. MECARD格式的电子名片简单介绍
  2. 各种pytorch项目
  3. (分类-部分)如何转载别人的文章
  4. linux命令0424
  5. 互联网晚报 | 3月26日 星期六 |​ 竞拍规则优化,部分城市土地市场有所回暖;​​武汉房贷利率下调...
  6. Spring Ioc创建对象的方式
  7. 仿hotmail收件人弹层: onkeyup事件无法捕获到回车按键, 用onkeydown事件捕获额外处理回车键...
  8. 【Java】程序调试
  9. [转]window.location方法获取URL及window.location.assign(url)和replace(url)区别
  10. 传输预编码matlab,无线通信-预编码-MATLAB代码合集-毕设专用.zip
  11. 中国姓氏大全(常见508个,罕见740个)
  12. html页面导出pdf截断问题,vue页面生成pdf且避免分页截断处理
  13. matlab 电机 热仿真,MATLAB在电机仿真中的应用
  14. sap服务器的文件管理,SAPPLM 文档管理介绍
  15. 请问手机有没有简单好用图片去水印app?这4款手机软件可以实现去水印
  16. 华为telnet连接(无用户名登录和aaa模板登录)
  17. 使用长角牛演示:防止ARP被攻击的原理和配置----------划水也别忘记学着玩
  18. 一篇文章带你认识数学建模中的方程与方程组
  19. 01笔记 数字逻辑基础——逻辑代数基础——基于《数字逻辑基础》陈光梦(第三版)
  20. 操作系统实验三·xv6系统增添系统调用和用户级应用程序

热门文章

  1. 【小家Spring】Spring AOP原理使用的基础类打点(AopInfrastructureBean、ProxyProcessorSupport、Advised、AjType)
  2. ai如何旋转画布_ai怎么让一个图形等比旋转
  3. Connection could not be established with host smtp.163.com [Connection timed out #110]
  4. HDU - 5651 xiaoxin juju needs help 逆元模板
  5. otf和ctf的意义_OTF与CTF的比较与.ppt
  6. 计算机改变世界英语作文,2013年3月3日托福独立写作范文:年轻人改变世界(英文版)...
  7. MySQL:连接错误
  8. 杨百翰大学计算机科学专业,杨百翰大学有哪些专业_专业排名
  9. [游泳] 游泳学习课程
  10. Asp.NET Excel导入数据返回JSON字符