• 7611阅读
  • 17回复

[讨论]windows下有什么办法能在让用了QtGUI的程序编译出来小一些?我先提个思路看是否可行。 [复制链接]

上一主题 下一主题
离线hcaihao
 

只看楼主 倒序阅读 楼主  发表于: 2011-10-16
将QtGUI拆分成不同的组件,用到哪个链接哪个,有人这么做过?
离线dbzhang800

只看该作者 1楼 发表于: 2011-10-16
这东西本身就没多大吧?
离线roywillow

只看该作者 2楼 发表于: 2011-10-16
Gui的dll还是挺大的感觉
好像Qt5是成了另外一个模块?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 3楼 发表于: 2011-10-16
这个想法挺特别,不过QtGui的基类QObject,QWidget不能省略。

我前几天有个想法:既然Qt不使用系统原生控件,是Qt模仿出来的,
为什么Qt不开发出一套有Qt 外观特色的控件(如MACOSX的界面截图非常容易辨认)
让人们一看到这个界面,就认出这个程序是Qt开发的!
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线dbzhang800

只看该作者 4楼 发表于: 2011-10-16
引用第2楼roywillow于2011-10-16 20:15发表的  :
Gui的dll还是挺大的感觉
好像Qt5是成了另外一个模块?

恩,是不小,不过还不至于达到在Windows下都不可任的地步(连移动设备、嵌入式中似乎都没怎么抱怨它太大)。Windows下包含QtCore、QtGui模块的程序打包后似乎也就3~4M的样子。

Qt5中QtGui模块是大大变小了,但是发布程序时又需要 QtWidget、QtPrintSupport 这些被拆分出来模块了
离线jdwx

只看该作者 5楼 发表于: 2011-10-16
Qt的这些个Dll还有另外一个问题,Qt版本更新快是好事,但是老版本的EXE(别人的程序)和新版本的Dll不一定能
在一起使用,就产生了这个问题,旧的EXE要带着自己的Dll,每一个EXE都是如此,每台机器上就有若干套Qt的Dll,好像就失去了Dll的意义,还不如用静态编译好了。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线dbzhang800

只看该作者 6楼 发表于: 2011-10-16
引用第5楼jdwx于2011-10-16 22:05发表的  :
Qt的这些个Dll还有另外一个问题,Qt版本更新快是好事,但是老版本的EXE(别人的程序)和新版本的Dll不一定能
在一起使用,就产生了这个问题,旧的EXE要带着自己的Dll,每一个EXE都是如此,每台机器上就有若干套Qt的Dll,好像就失去了Dll的意义,还不如用静态编译好了。


Qt这方面做的没什么问题,比如Qt4.0编译的程序,在Qt4.1/4.2/4.3/.. 下都可以正常工作,新的动态库可以直接替换老的。

问题出在C++标准没有规定abi,导致不同C++编译器编译出的动态库无法通用。
离线hcaihao

只看该作者 7楼 发表于: 2011-10-16
回 3楼(jdwx) 的帖子

引用第3楼jdwx于2011-10-16 20:22发表的  :
这个想法挺特别,不过QtGui的基类QObject,QWidget不能省略。

我前几天有个想法:既然Qt不使用系统原生控件,是Qt模仿出来的,
为什么Qt不开发出一套有Qt 外观特色的控件(如MACOSX的界面截图非常容易辨认)
让人们一看到这个界面,就认出这个程序是Qt开发的!



其实QT里面带的Plastic、Cleanlooks是与平台无关的风格,也可以认为是QT的特有界面。
离线hcaihao

只看该作者 8楼 发表于: 2011-10-16
我基本上都是用静态链接,一个exe起码3、4M,相比MFC和Delphi写出来的几百k,实在是太大了,网络传输推广都很不方便
离线napier

只看该作者 9楼 发表于: 2011-10-17
引用第8楼hcaihao于2011-10-16 22:44发表的  :
我基本上都是用静态链接,一个exe起码3、4M,相比MFC和Delphi写出来的几百k,实在是太大了,网络传输推广都很不方便

确实,就算用各种方法减肥,最后使用加壳程序压缩,还是在 2M 以上,和 KB 级别的比起来差距很大。本地硬盘上虽然不差这点空间,但是网上不行。KB 级别,在各种论坛上一般都在附件大小限制以内;要是用 Qt,就得分卷压缩上传,发布麻烦,下载也麻烦。但这也是跨平台必然的代价吧……

离线hcaihao

只看该作者 10楼 发表于: 2011-10-21
难道没有什么办法吗,QtGUI里面的大部分内容都是不用的,常用的就那么几个控件
离线XChinux

只看该作者 11楼 发表于: 2011-10-22
那只能期待哪天Qt能像Flash插件、.net framework一样成为windows标配,windows update能自动更新,就像Qt在许多Linux发行版、Symbian3、MeeGo下一样,就好了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线ninsun

只看该作者 12楼 发表于: 2011-10-22
我的程序也就836k
占地方的永远都是库文件和资源文件……
谁让windows不自带Qt的库……
离线jdwx

只看该作者 13楼 发表于: 2011-10-22
回 12楼(ninsun) 的帖子
其实windows自己的MFC不是一样要MFC   Dll,更别说.NET库那个大块头了。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线hcaihao

只看该作者 14楼 发表于: 2011-12-06
问题是人家大,但是系统自带啊。

QT也不是不能小,QWidget的子类分开链接就可以了,搓到一起当然大了。不管别的库怎么样,我是在探索缩小QT体积的方法。
离线roywillow

只看该作者 15楼 发表于: 2011-12-06
正好前几天看到了这个
http://www.formortals.com/build-qt-static-small-microsoft-intel-gcc-compiler/
从这上面可以看出msvc编译出来的最小,但是gcc经过优化体积也可以小很多
或许达人们能探索出更精简的编译参数?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 16楼 发表于: 2011-12-06
拆分Qt库。
但是不清楚有没有涉及到版权、协议之类问题?
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线roywillow

只看该作者 17楼 发表于: 2011-12-06
回 16楼(jdwx) 的帖子
拆分Qt库也需要修改源码吧
印象中修改了源码就必须得全部开源?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个