博文

发布中文Qt程序时要注意的问题(转)(2009-09-12 11:36:00)

摘要:用Qt写好了程序,并撰写了中文的语言文件(.qm文件) 后,发布到没有安装过Qt的系统上时,却发现只有固定的界面文字中的中文能正常显示,而程序运行过程中保存到诸如txt、xml文件中的中文却变成了奇怪的编码,而读回时就会变成“?”。 经过研读Qt的文档,总算知道了原因,那是因为对于中文之类的特殊编码文字,Qt系统中是使用相应的TextCodec来进行Unicode到本地编码(GB2312,GB18030等)的转换的,而这个TextCodec并不是静态编译到Qt的几个库文件中的,而是在编译完Qt系统后,以Plugin 的形式出现在 /qt/plugins/codecs 目录下,如简体中文的Codec库文件名为:qcncodecs4.dll,而我发布Qt程序时只安装了Qt的几个主文件(QtCore4.dll,QtGui4.dll),所以造成了该系统上缺少中文Codec的问题。 解决方法很简单,有多种方法:
1)将以上的中文编码库文件安装到可执行程序的目录下的 codecs 目录下,程序启动时,QtCore中的初始化过程会自动找到该目录并加载到内存中。
2)在Qt程序启动时,用代码指定Qt的Library搜索路径。
3)编写qt.config文件,放在可执行文件的目录下,并在其中定义Codecs的路径。
4)对于用static编译的Qt,在主程序文件中写上这句宏指令:Q_IMPORT_PLUGIN(qcncodecs),并在Link中加入相应的LIB文件。
具体内容我不多说了,看Qt文档吧: doc/html/plugins-howto.html 另外,Qt的图像解码系统也是用Plugin的方式提供的,如果忘了复制如jpeg,gif之类的解码库的话,程序将只能显示bmp和png的图片了。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xuxinshao/archive/2008/10/20/3111447.aspx......

阅读全文(2357) | 评论:0

插件法实现自定义控件集成(转)(2009-09-09 09:37:00)

摘要:插件法需要创建一个插件库,使Qt Designer能够实时加载,用来创建控件的实例。这样,Qt Designer就可以在编辑窗体或者预览的时候使用自定义控件。因为有了Qt的meta-object系统,Qt Designer能动态获得自定义控件的全部属性。现在以IconEditor为例,用插件法把IconEditor集成到Qt Designer中。
首先,我们从QDesignerCustomWidgetInterface派生一个新类,重写一些虚函数。我们假定这个插件的源代码在iconeditorplugin目录中,IconEditor类的代码在与它平行的目录iconeditor中。
这里是插件类的定义:
#include <QDesignerCustomWidgetInterface>
class IconEditorPlugin : public QObject, public QDesignerCustomWidgetInterface
{
    Q_OBJECT
    Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
    IconEditorPlugin(QObject *parent = 0);
    QString name() const;
    QString includeFile() const;
    QString group() const;
    QIcon icon() const;
    QString toolTip() const;
    QString whatsThis() const;
    bool isContainer() const;
    QWidget *createWidget(QWidget *pa......

阅读全文(3650) | 评论:1

qt程序发布方法(2009-09-08 22:30:00)

摘要:部署发布QT程序有两种方法: 第一种,静态编译,可生成单一的可执行文件。 第二种,动态编译,需同时附上需要的dll文件。 一、静态编译 1 编译QT。 要静态编译,首先要求QT是静态编译过的。在QT目录下执行: configure.exe -static -release make sub-src 就可以编译出静态库。如果只是用来分发程序,也可以mingw32-make release sub-src只编译一个静态库。 这个过程需要1-2个小时。QT目录会变成1.8G左右。注:mingw32-make和make是一样的。 如果用VC2005平台,在编译Qt的时候,configure.exe -static -platform win32-msvc2005 然后nmake sub-src或者nmake release sub-src完成静态编译。 2 编译程序。 然后到你自己的程序目录下执行: make clean qmake -config release make 这时会得到一个非常大的可执行程序,但也会有一个重要的问题,就是图片文件显示不出来。 按照QT帮助的说法,QT里的jpeg,gif等图片的支持都是以插件的形式存在的,现在我们还没有包含任何插件。 3 加入插件 在main.cpp里: #include <QApplication> #include <QtPlugin> //这个 Q_IMPORT_PLUGIN(qjpeg) //这个 Q_IMPORT_PLUGIN(qgif) //这个 int main(int argc, char *argv[]) { QApplication app(argc, argv); … return app.exec(); } 在.pro里加入: QTPLUGIN += qjpeg qgif CONFIG += static QT的帮助里就做到这里,但我编译程序时出错如下: release/main.o(.text+0×1c9):main.cpp: undefined reference to `qt_plugin_instance_qgif()’ undefined reference to `qt_plugin_insta......

阅读全文(5790) | 评论:0

浅入深出在Win XP上傻瓜式编译安装Qwt中(转)(2009-09-08 11:07:00)

摘要:原文链接:http://www.cuteqt.com/blog/?p=1015 在上篇中,介绍了如何使用QtCreator编译安装qwt,现在介绍怎么使用QtCreator来编写使用了qwt库的qt程序。 为了简化流程,本菜菜直接复制了qwt中example的代码,并且使用QtCreator新建一个工程并将代码粘贴进去。这时如果误以为只要点击run就可以运行程序,那就是大错特错了。本菜菜开始时就犯了如下的错误,不幸的是,是直接使用了qwt目录里的example,而里面的pro工程文件可是设置完毕的,只要生成了库文件dll和libxx.a的文件情况下,自然是可以运行的。本菜菜就是这样被蒙蔽了,才造成qwt库设置完毕的假象。 这时如果点击run,多半会出现以下错误: 简单地来说,就是QtCreator找不到qwt库中各个类型的声明。解决的办法也很简单,将qwt的头文件包含进去即可。去qwt的解压目录,在下面有个src目录,里面就有所有qwt的源码文件,将其中的.h头文件复制出来,然后去Qt SDK的安装目录,在下面的qt子目录的include目录里(比如F:\Qt\2009.03\qt\include)新建一个Qwt文件,将复制出来的.h文件粘贴进去。 Qwt毕竟是第三方库,指望QtCreator能自动认出来,还需要在.pro里文件设置LIBS和INCLUDEPATH ,这些属于qmake的知识范畴内,有兴趣的朋友可以去看看文档qmake手册部分:http://qt.nokia.com/doc/4.5/qmake-manual.html. 本菜菜的设置如下: LIBS += -L”f:/Qt/2009.03/qt/lib” -lqwt5 INCLUDEPATH += f:/Qt/2009.03/qt/include/qwt 各人设置爱好都不一样,大家可以根据自己的需求来设置。 上面这些步骤浓缩起来时很简单,但在一无所知地情况下,本菜菜花费了大量的时间来尝试,可谓步步都留下辛勤的汗水。 恐怕很多在想了,现在总可以正常使用qwt了吧,好吧,我也是这样想的,结果却是: 真是很郁闷的错误啊,然后又花费了大量的时间进行研究,原因其实也很简单,在winXP下面,Qt是不能混用库的。在QtCreator下面,默认编译运行的是debug模式,而......

阅读全文(3937) | 评论:0

浅入深出在Win XP上傻瓜式编译安装Qwt上(转)(2009-09-08 11:06:00)

摘要:原文链接:http://www.cuteqt.com/blog/?p=994 现在看到的本文已经是第三版,写这篇博文的起初原因是本菜菜最近准备使用Qwt开发一些功能部件,而公司里基本是使用win Xp系统进行开发工作,为了便于日后的团队开发,所以研究了怎么将qwt库和QtCreator整合起来。 但是由于不是很严谨的态度,但随便的实验感觉成功后,感觉整合没问题后,就轻松地写了篇博文,幸亏由于shiroki大姐的指出,才发现许多不足,甚至是严重的错误会误导别人。 通过双休日的不懈努力和研究,总算实验成果,并且证实了本菜菜的思路,而且对于Qt更加了解,对以前缺少的知识点也得到了补足,这个内容么,也真正做到的浅入深出。 在基于Qt绘制科学图表 -- Qwt试用中,shiroki大姐介绍了怎么样在linux下安装qwt,并使用qwt,本菜菜经过在winXp操作系统下的不断尝试,发现能快速地使用Qt Creator进行编译,而在开发程序时也能使用Qt Creator进行,故详细地介绍给大家。 首先确定你使用的是winXP操作系统,并且已经安装了Qt SDK for windows,如果没有安装,可以去Qt官方网站下载安装包安装,安装的过程十分简便,跟普通的windows的EXE安装包没有太大区别,指定好路径,一路next就可以安装,在安装完成后,也无需设置环境变量即可使用来编写编译Qt程序。 安装完毕后,即可使用QtCreator,然后去下载qwt的源代码,目前的版本为qwt-5.2.0,在前面文章中提供过项目主页地址,在项目主页地址下可以选择下载对应linux的tar源码压缩包或者对应win的zip源码压缩包,我们选择的自然是zip压缩包,然后下载完成后,解压在英文路径下的目录即可。 有了Qt SDK,qwt的编译过程自然就变得简单无比了,环境变量啊,Qt的lib库啊,一切都有Qt SDK帮助,这就是为什么是我想说傻瓜式安装qwt的原因。相比以前的编译,安装和设置环境变量,使用Qt Creator可以帮助简化步骤。 打开Qt Creator,打开qwt源码目录下的.pro工程文件,然后点击左下的run按钮,qwt就开始了自动编译的的过程: 编译过程需要5到10分种时间,可以坐下别的事,或者喝杯咖啡什么的>_<,并且Qt Creator......

阅读全文(3248) | 评论:2

qwt(2009-09-08 10:48:00)

摘要:【QWT简介】   QWT[1],全称是Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目, 可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供,输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等。该工具库基于Qt开发,所以也继承了Qt的跨平台特性。   【QWT基类】[2]   QwtAbstractScale: 包含刻度尺的所有类的抽象基类;   QwtAbstractScaleDraw:绘制刻度尺的抽象基类;   QwtAbstractSlider:滑块部件的抽象基类;   QwtAlphaColorMap:可以改变颜色的alpha值;   QwtAnalogClock:时钟的模拟类;   QwtArrayData:包含2个QwtArray<double>实例的数据类;   QwtArrowButton:箭头按钮;   QwtClipper:剪贴板类;   QwtColorMap:提供数值到颜色的映射功能;   QwtCompass:指南针部件;   QwtCompassMagnetNeedle:指南针部件的磁针;   QwtCompassRose:罗盘部件的抽象基类;   QwtCompassWindArrow:风向标的指示器;   …… ……   【统计图截图】[3]   1、柱状图                柱状图                 2、曲线图               曲线图                  CUP性能图     &......

阅读全文(3233) | 评论:0

qt 4.5 与visual studio 集成(转载)(2009-09-08 09:50:00)

摘要:转载自:http://www.yanjiuyanjiu.com/2009/04/9/qt-vs-intergration.html 本文主要讲述将Qt 4.5与 Visual Studio 2008集成,同样适用于Visual Studio 2005, 2003。 Qt 4.5 虽然新增了LGPL协议,但这也阻碍了我们在VS中使用Qt。因为免费开源的版本只提供了GCC编译好的二进制库,而没有VC编译好的二进制库,只有商业版本才有VS编译好的针对Windows的DLL,lib等二进制库(恩,可以理解)。 再者,VC编译器比GCC 还是要强劲很多,并且调试器异常强大。Qt Creator虽然很酷,目前还很粗糙。很多人也更为熟悉VS的界面。 下面我们就自己用VS编译出二进制库,然后就可以跟商业版一样了。 不过,你也可以直接google“qt 4.5 编译好”,找到很多人已经编译好的二进制库,下载下来直接用。下面的内容可以不看了^_^ 1. 下载并安装 qt-sdk-win-opensource-2009.01.exe,安装到默认的 c:\qt\2009.01。它包含了MingGW和 Qt Creator,以及预编译好的二进制文件(用GCC编译的)。你可以直接使用Qt Creator 开始开发工作,不需要任何额外的配置。 2. 将整个目录 c:\qt\2009.01 拷贝一份到 c:\qt\4.5.0-vc。我们将会修改目录c:\qt\4.5.0-vc,使用VC++来编译出所需要的库。这两个目录可以同时存在,Qt使用c:\qt\2009.01,Visual Studio 使用 c:\qt\4.5.0-vc。 3. 修改 C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\下的 vsvars32.bat,在环境变量PATH中添加Qt的目录,如 c:\qt\4.5.0-vc\qt,在INCLUDE 添 加上c:\qt\4.5.0-vc\qt\include ,在LIB添加 c:\qt\4.5.0-vc\qt\include,如: @set PATH=C:\Qt\4.5.0-vc\qt;c:\Program Files\Microsoft Visual Studio 9.0\Com......

阅读全文(3769) | 评论:0