2019-11-08 【RCViewer】使用QT开发应用的正确姿势

RCViewer最终选择QT作为应用框架,到今天为止,我认为这一次技术选型并没有错,一半来自于我对现有开发进度与实验结果的掌控和满意度,另一半来自于我惊喜的发现,最伟大的先驱竟然也是QT开发的,这一下子背书了QT可以开发大型应用的能力,所以QT就这样成为了正选。

然而是不是没有遗憾?早期在QT上做UI,实在是只知道在.ui文件中拖拖拖,然后一顿猛调,可是跑起来后返现,这里有一点点歪,那里也有一点点不准确。所见即所得的编程方式再一次极大降低了应用开发的门槛,码兽们已经不需要知道组件是怎么画出来的,组件可以响应的按键事件是怎么被系统抛出来,然后一路不迷失直奔目标到达组件这里的,只需要拖动组件,添加信号,或者像MFC一样双击,填写callback。但所见即所得的编程方式,也使得在需要对应用展示做精细化调整时,从内心出发的无能为力。

所以QT引入了qss,这实在是福音,在.ui文件中摆放控件的大概位置,不需要理会控件的具体样式与内容,也不需要理会控件的响应式交互,然后到你的qss,定义控件的样式,与响应式交互,简直完美。可是.ui与qss的组合也有大缺点。qss是一个css的语法模仿,然而这个语法模仿的意思,指的是qss仅仅语法模仿css,在使用方式上,qss与css有相当大的区别(也可能是我没有解锁qss的正确玩法)。css中的继承体系,引用体系,在qss中完全没有体现,qss只是提供了一种用配置文件定义.ui文件中控件样式的方式。控件样式中频繁会使用的常量如颜色、字体等,qss中并不能做常量定义,何其悲伤,当我想修改一种字体或者某几个属性共用的属性,不得不修改多个地方,以保证展现上的协调。我想QT大概是想以QWidget的继承体系,覆盖qss中的继承体系,然而对于习惯与css的码兽来说,这太隐晦了。

.ui和qss的结合还有致命缺陷:无法只做层叠UI。.ui中可以添加DockWidget,然而此Dock并不表示我可以浮在任何人上方不占用parent的空间,此Dock是要占用空间的,此Dock会将parent中的其他控件挤压,然后把自己固定在边上。这对于只做像Word的菜单栏一类的应用,确实是利好,然后我们还有很多浮动的弹出菜单,既需要Dock在边上,又不能占用parent的空间哇!所以在这种情况下,C++出场了。

所以用QT开发应用的正确姿势应该是:.ui做大概布局,qss定义控件样式,C++实现复杂效果。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容

  • 标签(空格分隔): 移动应用 跨平台 混和开发 Flutter 移动应用跨平台开发框架,根据其原理,主要分为三类:...
    黄昭鸿阅读 4,662评论 0 2
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,576评论 0 7
  • 灯火总是在黑夜里才会更加明亮!
    奇门杂货铺阅读 35评论 0 0
  • 一蓬骆驼刺 两座沙丘 三四个盐碱滩 一些游人纷纷睡去 你依然固执地守望窗外 一列白杨 随风摇摆 潇洒出一片动感地带...
    弱水一杯阅读 303评论 3 11
  • 只是橱窗里的一个模特 却总是幻想像那夜里的飞蛾 有一天, 自己也能奋不顾身地去爱火 只是橱窗里的一个模特 穿着华丽...
    云尘心阅读 273评论 0 3