QT
文章平均质量分 75
yuventus
这个作者很懒,什么都没留下…
展开
-
QT 常用问题解答(转)
1、如果在窗体关闭前自行判断是否可关闭答:重新实现这个窗体的closeEvent()函数,加入判断操作Quote:void MainWindow::closeEvent(QCloseEvent *event){ if (maybeSave()) {writeSettings();event->accept(); } else {event->ignore(); }}转载 2010-05-08 22:58:00 · 337 阅读 · 0 评论 -
qt中文编码
<br />【Qt 编码简单实验】<br /> 首先,Qt中得QString 类对字符串进行了封装,其内部使用Unicode对传入的串进行编码。这样一来,QString就可以处理绝大多数的国际语言。将QString中的字符根据语言翻译的过程,也就是Qt 的Translater针对程序中使用含有的tr("XXXXX"),进行翻译的过程。由于QString的Unicode编码,和本地系统的编码不一定是一致的(比如系统采用的GB2312的编码)。这样的话,就不能直接使用类似Q转载 2010-11-16 14:19:00 · 505 阅读 · 0 评论 -
Qt for symbian工程文件的一些特异写法
<br />symbian本身的工程文件不具有cross-platform特性,都是一些自己唯一的定义文件,像:*.mmp,*.pkg文件。而Qt得工程文件为*.pro。如何实现*.pro到*.mmp ,*.pkg文件的映射则值得总结。<br />1:添加库<br />对于添加库,无论是静态还是动态库,都需做两步:先是声名一下,其后是拷贝。二者仅仅是声名的方式不一样。<br /> <br />1:声名:<br /> <br />(1)动态库<br />symbian:LIBS += <b转载 2010-11-17 14:49:00 · 409 阅读 · 0 评论 -
Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
<br />在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等。 <br /> 但是各种方法都有其注意事项,如果不注意则很容易陷入麻烦中。<br />1:setStyleSheet()<br /> 这个函数我一直很喜欢使用,因为只要写一句就可以实现效果,比其他方法都简单,但是其却有一个很值得注意的地方,也就是这个地方让我大吃苦头。<br /> 亦即:①:该函数只能用于设置有父窗口的转载 2010-11-17 12:09:00 · 617 阅读 · 0 评论 -
PIMPL模式
进行跨平台的移植工作,这其中有些地方是无法完全移植过来的,所以:需要我们封装一个接口类,在不同平台下让其有不同的实现。要做到这一点:有很多办法,条件编译啊之类的。但是如果有这种方法,说白了:其还是两份代码,仅仅是放到同一个文件中。参考Qt实现跨平台的办法,正好读了一片这方面的文章,发现PIMPL模式还是很适用的。 ---------------------------------------------------------- //public.h Class PrivateClass //前转载 2010-11-17 15:13:00 · 584 阅读 · 0 评论 -
如何在pro文件中添加库文件(Qt for symbian)
<br />在Qt for symbian开发时:有时需要将一些dll库文件拷贝到手机中,如果单纯是symbian编程则之需要修改下mmp文件和pkg文件,但如果是qt程序的话,我们只能通过修改Qt的pro文件来实现,下边是实现方式:<br />对于添加库,无论是静态还是动态库,都需做两步:先是声名一下,其后是拷贝。二者仅仅是声名的方式不一样。<br /> (以下代码都是要加到pro工程文件中的)<br />1:声名:<br />(1)动态库<br />symbian:LIBS += <br /转载 2010-11-17 13:13:00 · 821 阅读 · 0 评论 -
Qt中如何保存 自画图片 为 图片文件
<br />先建一个QImage/QPixmap之类的图片对象,而后在其上边进行绘制,最后将这个图片对象保存为文件。<br />方式1:(直接使用图片类的save()函数)<br /> QPixmap pix(40,40);<br /> QPainter p(&pix);<br /> p.drawText(0,10,"Hello,World"); <br /> p.end();<br />转载 2010-11-17 14:34:00 · 12355 阅读 · 0 评论 -
Qt for Maemo的开发环境搭建流程
<br />在网上看了很多类似的文章,但都有欠缺,现在把自己的经验记录一下<br /><br />我的操作系统是Ubuntu 9.10。我发现完成以下安装后将系统升级为10.04会导致原有的安装部分失效,所以建议大家不要在9.10上安装,然后升级到10.04。<br /><br />1 安装 Maemo 5 SDK<br /> Nokia弄了个图形界面的安装程序,可以很方便的安装Maemo 5 SDK,Scratchbox。<br /><br /> 下载地址为http://www.f转载 2011-03-03 15:48:00 · 489 阅读 · 0 评论 -
Qt phonon多媒体框架
<br /> Phonon是什么?Qt从4.4版本开始提供的一套多媒体框架,提供多媒体回放的功能。目前在Qt 4.6中实现多媒体播放图形界面主要依赖于phonon框架,其实qt中还有一个Multimedia模块,帮助文档中对它的描述是:实现底层的多媒体播放功能,在一般情况下上层的接口phonon模块更适合实现这些功能。phonon最初是 一个 源于KDE的项目,为使用音频和视频的应用程序开发提供的一个框架。应用程序不用去管多媒体播放是通过什么实现的(如gstreamer、xine),只转载 2011-04-27 10:06:00 · 683 阅读 · 0 评论 -
Qt的内存管理
<br />在QT的程序中经常会看到只有new而不delete的情况,其实是因为QT有一套回收内存的机制,主要的规则如下:<br />1.所有继承自QOBJECT类的类,如果在new的时候指定了父亲,那么它的清理时在父亲被delete的时候delete的,所以如果一个程序中,所有的QOBJECT类都指定了父亲,那么他们是会一级级的在最上面的父亲清理时被清理,而不用自己清理;<br />2.程序通常最上层会有一个根的QOBJECT,就是放在setCentralWidget()中的那个QOBJECT,这个QOB转载 2010-11-09 23:29:00 · 365 阅读 · 0 评论 -
经过使用验证的QString转char* 方法
<br />最近使用QT作保存数据的时候选择保存路径的时候让我挺费脑筋,特别是包含中文的路径,如下面的selSaveFilePath:<br />QString selSaveFilePath = “/C:/中国/北京/qt”;<br />转换为char*的时候出现了char* cSavePath = “/C:/???//???//qt”;<br />这肯定是没有转换成功,保存数据的时候程序直接over了。 下面是经过测试能够正确转换的方法:<br />QString SaveFilePath = selS转载 2010-11-07 23:20:00 · 412 阅读 · 0 评论 -
为什么Qt不用模板来实现信号和槽?
<br />一个简单的答案是,当初Qt被设计的时候,因为各种各样的编译器的不充分,所以在多平台应用程序中完全使用模板机制是不可能的。甚至今天,许多被广泛使用的C++编译器在使用高级模板的时候还是有问题的。例如,你不能安全地依靠部分模板的示例,这对一些不平常的问题领域是必要的。因此Qt中模板的用法不得不保守。记住Qt是一个多平台的工具包,在Linux/g++平台上的进步不一定能够在其它情况下获得改进。<br /><br />那些在模板执行上比较弱的编译器终将得到改进。但是,即使我们所有的用户以极好转载 2010-10-29 15:10:00 · 961 阅读 · 0 评论 -
21个Qt隐藏功能和技巧(转)
Q_GADGET:不需要从QObject继承就可以使用Qt的Meta Object功能Q_ENUMS:对枚举对象进行反射(reflection)Q_SIGNAL:不需要signals关键字就可以将一个函数指定为singal函数Q_SLOT:不需要slots关键字就可以将一个函数指定为slot函数Q_FOREACH:Qt提供的关键字foreach在配置文件里面定义了no_keywords的时候就失效了,而Q_FOREACH宏无论何时都有效Q_FOREVER:原因同Q_FOREACH,用法和关键字forever转载 2010-06-02 20:50:00 · 526 阅读 · 0 评论 -
Qt源码分析之QObject (转)
<br /><br />Qt的QObject<br />1.试验代码:<br />#include <QApplication><br />#include <QtCore><br />#include <QtGui><br />int main(int argc, char *argv[])<br />{<br /> QApplication app(argc, argv);<br /> int size = sizeof(QObject);<br /> QPushButton* quit = new Q转载 2010-06-03 11:10:00 · 430 阅读 · 0 评论 -
Qt源码分析之信号和槽机制(转)
<br /><br />Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的<br />说法,简单点说就是如何在一个类的一个函数中触发另一个类的另一个函数调用,而且还要把相关的参数传递过去.好像这和回调函数也有点关系,但是消息机制可比回调函数有用<br />多了,也复杂多了<br />MFC中的消息机制没有采用C++中的虚函数机制,原因是消息太多,虚函数开销太大.在Qt中也没有采用C++中的虚函数转载 2010-06-03 12:23:00 · 503 阅读 · 0 评论 -
Qt源码分析之QPointer(转)
QPointer是一个指针封装类,其作用类似于智能指针,但是它最大的特点应该是在指针的控制上,它希望一个Qt的指针(当然是从QObject派生的)可以同时被多个类拥有,这在界面编程中当然是很常见的事情了,但是当这个指针被删除时,我们不希望再找到那两个界面类然后通知它们,相反我们希望这两个界面类可以直接判断QPointer中的isNull方法很自然的知道原始指针已经不存在了1.试验代码:#include #include #include int main(int argc, char *argv[]){ Q转载 2010-06-03 12:26:00 · 855 阅读 · 0 评论 -
Qt与symbian特定格式类对象的转换(转)
1:FbsBitmap转为QImage应用场景:当使用摄像头时:拍摄的图像都是FBsBitmap,而如果要想让其显示在QWidget上,则需要首先将其转换成QImage格式。参数说明:aBitmap是传入参数,aImage是传出参数,当动态拍摄(相当于摄像)时:aStep为4; 当capture拍摄静态图片时:aStep为3.void FbsBitmapToQImage(CFbsBitmap* aBitmap,QImage* aImage,TInt aStep){ int aHeight=aBi转载 2010-06-14 16:27:00 · 540 阅读 · 0 评论 -
Qt for symbian工程文件的一些特异写法(转)
symbian本身的工程文件不具有cross-platform特性,都是一些自己唯一的定义文件,像:*.mmp,*.pkg文件。而Qt得工程文件为*.pro。如何实现*.pro到*.mmp ,*.pkg文件的映射则值得总结。1:添加库对于添加库,无论是静态还是动态库,都需做两步:先是声名一下,其后是拷贝。二者仅仅是声名的方式不一样。1:声名:(1)动态库(这里我加的是名为fbscli的动态库)symbian:LIBS += MMP_RULES += "LIBRARY fbscli.lib"(2)静态库(这转载 2010-06-14 16:49:00 · 420 阅读 · 0 评论 -
Qt中如何保存自画图片为图片文件(转)
总体思路:先建一个QImage/QPixmap之类的图片对象,而后在其上边进行绘制,最后将这个图片对象保存为文件。方式1:(直接使用图片类的save()函数)QPixmap pix(40,40);QPainter p(&pix);p.drawText(0,10,"Hello,World");p.end();pix.save("a.png"); 方式2:(创建文件,向里边写图片数据) QImage iim(500,1900,QImage::Format_RGB32);QPainter pa转载 2010-06-14 16:58:00 · 1925 阅读 · 0 评论 -
Qt中实现单例模式(SingleTon)
<br />单例模式分为“饥汉”和“饿汉”两种版本,也正是线程安全问题使得原本简单的单例模式变得复杂。由于单例模式很常用,Boost库中有强大的泛型单例实现,我也利用Qt的原子指针QAtomicPointer来实现Qt中的单例模式: //.cppclass SingleTon{ public:/*! /brief 用于获得SingleTon实例,使用单例模式。 * /return SingleTon实例的引用。 */static SingleTon &getInstance(转载 2011-05-03 13:54:00 · 4748 阅读 · 2 评论