QT的rcc和qrc

刚开始时候根据文档自己些个qrc文件,
大概如下
application.qrc
 
 
     images/copy.png
     images/cut.png
     images/new.png
     images/open.png
     images/paste.png
     images/save.png
 
  
 
然后在pro里面加入
RESOURCES = application.qrc
 
当需要编译的图片类似的资源比较小的时候,一切都运转很好,当逐渐加多了资源以后,在windows下估计你会遇到这个错误
 
fatal error c1076:compiler limit ....
然后提示你增大 -Zm后面的值,默认是-Zm200,换成-Zm1000 勉强能工作一段时间,资源还是不断增多时候,这个办法就不行了,怎么办呢,回头再看文档.....
 
原来可以用rcc命令先得到一个rcc后缀的文件,然后在程序里面注册这个rcc后缀的文件即可
第一步,还是写你的qrc文件把
第二步,rcc -binary application.qrc -o application.rcc 如果你嫌麻烦,可以放到pro文件里面,用system函数做这个工作,pro文件支持system函数的
第三步,在你的程序中加入这么一句话
QResource::registerResource("/path/to/myresource.rcc");
注意路径要写对哦,
 
还有一种方法是 通过Q_INIT_RESOURCE宏来做的,我还没有详细用过,等用了,再告诉大家吧,
 
 
============================================
 
 
最近在开发一个IM软件,界面采用的是QT,数据库采用了SQLITE,由于我这个人能力有限,加上我也很菜,所以模块化是我唯一的选择,不知道大家有什么好的建议没有?谢谢!

我的是VS2008+QT集成开发环境。为了实现模块化,生成DLL是必不可少的。
我的原则是,尽量少的依赖QT,能用C++做的就不用QT,能做成DLL的就做成DLL,能独立分开的就独立!

如果只是想知道RCC的生成和使用,以下这段可以忽略!





我现在计划如下,先把界面设计出来(这个设计出来了,我借鉴了QQ的界面,由于我要把GUI做DLL,加上QT的样式表,
我可以在以后随意更改界面)。
设计好数据库(我目前只设计了用户表和好友表,由于我采用模块化设计,所以我要做到以后可以随意增删模块表,这个还没有完善的方案,只是有个大概的思路)。
编写GUI模块生成DLL(这里我考虑DLL最小化,但考虑到效率,目前还在犹豫中)。
下载SQLITE编译并做成独立模块(目前我已经编译好了SQLITE,本来想使用MYSQL的,可是不会编译,暂时就用着吧,
以后替换就是了,当然客户端还是要用SQLITE的,但是得考虑加密数据库才行,不知道大家有什么方法没?),


在把登陆界面做成DLL时,我遇到了一个问题,我使用了样式表设计界面,QT的样式表的确很强大,界面生成EXE文件后,
还可以通过样式文件改变界面的外观,这让我很高兴!当初我是想在程序中调用API设计界面的,后来发现这个方法太死板,
于是又想用QML,但是我不怎么会用,而且听说支持javacript形式的编程控制。我一听就来气,JS这个东西哥讨厌死它了,
还有那个什么JAVA的哥也不喜欢!所以最后哥选择了样式表!
样式表的确定很好用,最重要的是它和标准CSS类似,我熟悉CSS,所以样式表是个不错的选择,
如果你在用QT我建议你试一试样式表,你会喜欢上它的,也许它并不比API效率来的高,但是开发和维护是相当方便的,值得一用。
我想就算效率再怎么差,也应该比那个什么JAVA强吧!请原谅我讨厌JAVA!







QT保护发布软件中图片资源的安全方法
QT中有三种使用图片的方法
一、直接编译到EXE中,这个方法扩展性不好,我没用!
二、通过路径引用图片,比如样式表中这样用 background-image: url(info.png); 这样用很方便,
换风格只要更换一下图片就可以了!我原来就是这样用的,但是今天我发现一个很严重的问题,
如果我发布的软件被恶意修改了图片,而用户又不懂,这样的后果不可想象,所以我就开始找解决办法,GOOGLE一下,必现另一个方法!
三、生成RCC文件,在程序中调用用!
原文地地址http://qtdocs.sourceforge.net/index.php/Qt_%E8%B5%84%E6%BA%90%E7%B3%BB%E7%BB%9F

由于我这个人比较笨,所以我只学会使用rcc来编译图片文件,我的方法如下:
1.开始 -> 运行 -> cmd 然后回车就会弹出命令行界面 ,cmd是window下的dos
然后进入QT的安装目录,进入bin目录 进入img目录(这个img要你自己创建,进入目录的dos命令是cd)
2.在 img文件夹下新建一个名为img.qrc的文件 并复制一个名为info.png的图片到该img夹内,同时把bin下的rcc.exe文件复制到这个文件夹中
3.复制如下代码到img.qrc文件里保存
XML/HTML code
 
?
1
2
3
4
5
<!DOCTYPE RCC><RCC version="1.0">
 <qresource>
     <file>info.png</file>
 </qresource>
</RCC>

现在你的img文件夹内应该有img.qrc文件,info.png文件和rcc.exe文件了
4.在cmd中运行如下命令
rcc -binary img.qrc -o img.rcc
注意 -binary 和 -o 中的-应该和后面的命令连在一起不然会出错的
回车后如果没提示什么就表示成功了,你可以到img文件夹内看一下,如果有一个img.rcc文件就表示成功了
5.新建一下QT GUI项目,
加入头文件#include <QResource>
在子类的构造函数中输入
C/C++ code
 
?
1
2
QResource::registerResource("img.rcc");
this->setStyleSheet(QString("background-image: url(:info.png);"));

生成运行你就会看到效果了
posted @ 2016-08-19 14:26  crazy_machine  阅读(3083)  评论(1)    收藏  举报