博文
发布中文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......
插件法实现自定义控件集成(转)(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......
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......
浅入深出在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模式,而......
浅入深出在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......
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性能图
&......
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......
