(转)Qt3 与 Qt4 的区别

一些类和函数的变化: 
1)
QHBox这种类没有了,都需要改用QHBoxLayout来布局。就是先new一个QWidget出来,然后用这个Widget的setLayout方法来加入Layout。
2)
QApplication的setMainWidget方法没有了,不需要手动设置主窗口部件,似乎自动就设置好了。
3)
QWidget中的setCaption()方法改成了setWindowTitle()。
4)
QDialog的构造函数有变化,不再有QDialog(QWidget *, const char*)这种形式的构造函数了。
5)
QLineEdit类的isOn()方法改成了isChecked()。
6)
QImage构造函数有所变化。QT4中的某个构造函数如下:
  QImage
m_Image=QImage(128,128,QImage::Format_ARGB32);
  这里只是生成了一个128*128的RGB的图片,里面还没内容,
  m_Image.fill(
0xFFFFFF);这样之后就是一张白色图片了。
7) 对于其他不知道怎么处理的QT3中的函数,可以在项目的.pro中增加一个
  QT +=
qt3support
  这样就不会报错了,我想,多少会影响程序的运行效果,至于影响多大得根据函数的功能来说了。
8)
QThread发生了巨大的改变,新的QThread是从QObject继承而来的,因此可以在QThread中直接使用signal/slot了,它们是线程    
安全的。以前的QApplication::postEvent()方法没有了,我以前实现的一整套防止线程阻塞的机制也不再需要了。不过确实是   
很不错进步。
9)
QSocketDevice这样的底层socket连接控件没有了,QSocket也没有了,换而之的是QTcpSocket和QTcpServer,QTcpSocket即可   
以用异步方式调用,又可以在线程中,用同步方式等待数据到达。
10)QT的h文件不再混在一起了,而是分成Core,Gui,Network,Xml,OpenGL等等子文件夹,所有include都需要重写了,写成    
"#include <QtCore/QObject>"的样子。不过相对于前面的修改来说,这些实在不足挂齿了。

Qt4
Designer的变化: 
这个Designer的变化是非常的大,主要是取消了自定义signal/slot以及编辑代码的功能,而且如何使用Designer设计出的界面来编译程序的方法也有变化。

界面的设计和以前区别不大,添加各种Widget就行了,然后在connection编辑器中设置signal/slot,不过需要注意的是,QT4
Designer的connection编辑器不能自定义slot,需要手工编写connection,具体做法后面给出

总结一下: 
假设项目里面有一个类tc。Qt4的Designer会生成一个tc.ui文件,然后需要用户手写出tc.h和tc.cpp以实现tc类(实现这两个文件需要根据后来生成的ui_c.h文件),在tc.h和tc.cpp中用户可以加入自定义的signali/slot的声明和实现。然后qmake
-project来生成.pro工程文件,qmake生成Makefile,最后使用make编译。make的时候会Qt会根据tc.ui生成ui_tc.h文件,这个文件里含有tc类的基类Ui::tc,而真正的tc类则是通过多重继承实现的。
当然,如果不使用Qt
Designer而是直接写代码做界面的话就没有这么麻烦,编译方法和Qt3大致相同。

时间: 2024-10-23 15:31:27

(转)Qt3 与 Qt4 的区别的相关文章

Qt3升至Qt4需要注意的几件事项浅谈

公司以前的项目是用Qt3写的,随着时间的推移慢慢显示出Qt3有多方面的限制,因此先公司决定用Qt4来改写这个项目,并为软件添加新功能,在此背景先编写此文章. 先扯一下没用的:gotfocus是获得焦点时触发,Lostfocus是失去焦点的时候触发.比如:新建两个文本框,当点击第一个文本框的时候,则触发第一个文本框的getfocus事件,表示第一个文本框获得了焦点,可以进行操作了.然后鼠标点击第二个文本框的时候,第一个文本框首先触发lostfocus事件,标明它已经失去焦点,无法进行操作.同时第二

QT、QTE、qtopia区别

QT.QTE.qtopia区别 Qt的授权是分为两条线,商业版和开源版.如果使用商业版的Qt,那么开发出的程序可以是私有的和商业的:如果使用的是开源版的Qt,由于其使用的是GPL协议,那么可发出的程序也必须是GPL的.不过自从qt 4.5.0版本,诺基亚公司使用了LGPL协议,那么写出的程序就可以据为己有了! Qt 的版本是按照不同的图形系统来划分的,目前分为四个版本:Win32版,适用于Windows平台:X11版,适合于使用了x系统的各种 linux 和 unix的平台:Mac版,适合与苹果

将某个Qt4项目升级到Qt5遇到的问题(13条方法)

本文转载自http://hi.baidu.com/xchinux/item/9044d8ce986accbb0d0a7b87 一.将某个QT4项目改成QT5遇到的问题 该Qt4项目以前是使用Qt4.7.4 MSVC2008开发的,因为使用到了OWC10(Office Web Components),使用MSVC编译器的话无法正常升级到Qt4.8.x和Qt5,于是将编译器转成了MinGW4.7,Qt升级到了4.8.4.今天Qt 5.0.1-MinGW预编译版本发布了,于是就拿它练手,将它升级到Qt

开篇-QT完全手册

嵌入式工具Qt的安装与使用 摘要 Qt是Trolltech公司的一个产品.Trolltech是挪威的一家软件公司,主要开 发两种产品:一种是跨平台应用程序界面框架:另外一种就是提供给做嵌入式Linux开发的应用程序平台,能够应用到PDA和各种移动设备上.Qt和 Qtopia分别是其中具有代表性的两个.(2004-05-05 10:52:14) -----------------------------------------------------------------------------

年底奉献-QT编写视频监管平台(开源)

忙忙碌碌又是一年,算算自己毕业四年半,一直在现在这家公司做研发外加总经理助理,研发起初用的VB.NET,而后全面转为C#,最后又全面转为QT,都是由于项目需要,算下来自己搞QT编程也已经四年了,2010年开始接触QT并编写一些公司需要的辅助工具,其实搞程序的,我感觉绝大部分都是出于本身兴趣爱好,然后持之以恒的钻研,不断成长和进步. 项目需求:某区下面有几百所学校,每个学校都有若干台NVR或者DVR,每台NVR和DVR都挂接着N个IPC(摄像机)(包括网络摄像机和模拟摄像机),现在需要对所有学校的

qt-opensource-everywhere编译

安装QT嵌入式开发环境花了4天时间,记录其中过程点滴 .p { margin-bottom: 0.21cm; }1 .系统环境以及软件准备 主机操作系统: Ubuntu 9.04主机编译器: gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4)交叉编译器: arm-linux-gcc 3.4.1软件安装包:(软件包事先下载到了主目录下的 Qt 目录) qt-everywhere-opensource-src-4.7.0.tar.gz ( 适合 x11 ,embedd

cutycapt(php截图工具)

1. 安装cutycapt依赖包: yum -y install lrzsz vim patch make gcc gcc-c++ libtool openssl openssl-devel libxml2* libxslt* popt popt-devel libXpm libXpm-devel curl-devel openldap openldap-devel m4 autoconf ncurses-devel libXi-devel libXinerama-devel libmng* l

Qt4与Qt3的主要不同

1)QT4 中提供了大量新控件,虽然它也保持了旧的控件,并命名为Qt3XXX,但是这样的控件没准在今后的哪个QT版本中就不被支持了,所以还是换吧,控件替换的 工作是巨大的,这些新的控件使用了新的方法.属性.和事件名称,虽然是比以前更规范了,但是对于升级旧代码来说,则增加了大量工作. 2)既然要更新控件,那么你就需要使用QDesigner工具来重新画界面了,OK,重画只是纯体力劳动,好说.界 面画好后,使用uic来根据界面生成代码文件,QT3的uic可以自动生成.h和.cpp文件,假设你在制作一个

Qt4.8 移植(超详细Configure的参数)

Qt4.8.6 configure 参数 不只是适用于Qt4.8.6,原则上适用于Qt4所有版本 Usage: configure [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir <dir>] [-docdir <dir>] [-headerdir <dir>] [-plugindir <dir> ] [-importdir <dir>] [-