QT4程序开发说明_第1页
QT4程序开发说明_第2页
QT4程序开发说明_第3页
QT4程序开发说明_第4页
QT4程序开发说明_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、QT4程序开发说明刘永锋 2010-06-13一. 编译环境配置安装程序: 在22/soft 下1.1. QT包安装安装QT包(目前使用版本为QT4.4.3、以后使用QT4.5.2,QT4.5.2及以上版本需要使用源码VC6编译),安装好需要修改配置:QTDIR:QT的安装路径。如:QTDIR C:Qt4.4.3PATH修改:把原来Qt3的改成Qt4.4.2的 cmd执行qmake v 查看qmake的版本,确保是QT. VC配置修改Include修改:把原来的QT3的include 改成4.4.2Lib修改:把原来的QT3的lib 改成.

2、 QT Creater安装目前可以使用,环境是完整的,安装完毕后就可以编译。直接安装便可以。也可以使用 目前最高的版本,需要qt4.6以上的版本。缺少qt版本不可以用来编译。但是建工程是可以的。需要先安装QT,然后再安装mingw然后再安装。安装QT Creater的目的是用来生成QT的UI和相应的文件。二. 可执行程开发2.1. VC工程2.1.1. 新建 工程2.1.2. 工程环境设置 General页面选择 生成的文件输出设置: 是中间文件生成的路径 是生成的可执行文件路径 Debug页面 设置调试时可执行程序的路径 调试时的输入参数设置 C/C+页面 外部宏定义 设置本工程包含的文件路

3、径 Link页面 连接的dll文件2.1.3. 程序需要加的库说明compatlib.lib 基本库qtext.lib qt相关的库sql.lib 数据库接口库tcpudp.lib tcpudp通信库netlib.lib c/s架构通信库onldb.lib 实时库访问接口库clstbase.lib 集群管理基本库bscmbase.lib 曲线管理基本库dvcbase.lib 变电站控制基本库svclib.lib 电厂控制基本库mfcbase linux上mfc兼容lib,在linux上基本上都包括此库qtcurvedll.lib 曲线板库avcclientinitsrvlib.lib 集群管理

4、客户端访问库thdblistviewdll.lib qlistview扩展库2.2. QT UI界面新建qt工程:需要在qt creater 内新建选择使用工程Name 和Create in 可以设置 生成的工程名字和路径Class name 设置类的名字,可以修改Base class 设置界面继承的基类类型,可以为QMainWindow(主窗口)、QWidget(框架)、Qdialog(对话框)Source file 设置 .cpp文件的名字Generate fore 设置是否生成ui文件Form file 设置ui文件的名称生成的工程:Mainwindows.cpp 实现的cpp文件,后面

5、我们写的实现代码都要放到此cpp下的类里面。mainwindows.h 头文件定义mainwindows.ui ui文件 生成的pro文件2.3. 工程合并2.3.1. QT的界面程序合并到VC工程中需要QT工程中的文件:VC工程的结构:拷贝到VC工程下,相应的添加到VC工程下。新建Form Files 和Generated添加mainwindow.ui 到Form Files添加mainwindow.h到Header Files添加mainwindow.cpp到Source Files等编译了mainwindow.ui 会生成一个ui_mainwindow.h文件添加ui_mai

6、nwindow.h 到Generated下等编译了mainwindow.h 会生成一个moc_mainwindow.h文件添加moc_mainwindow.h 到Generated下2.3.2. 编译环境设置 mainwindow.ui文件设置:Running UIC on mainwindow.uiC:Qt4.4.3binuic.exe $(InputPath) -o .ui_mainwindow.h.ui_ mainwindow.h mainwindow.h文件设置:Running MOC on mainwindow.hC:Qt4.4.3binmoc.exe -DUNICODE -DQT_

7、LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_DLL -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -Ic:Qt4.4.3includeQtCore -Ic:Qt4.4.3includeQtCore -Ic:Qt4.4.3includeQtGui -Ic:Qt4.4.3includeQt3Support -Ic:Qt4.4.3include -Ic:Qt4.4.3includeActiveQt -Idebug -I. -Ic:Qt4.4.3mkspecswin32-msvc -D

8、_MSC_VER=1200 -DWIN32 $(InputPath) -o debugmoc_mainwindow.cppdebugmoc_mainwindow.cpp QT包含文件和连接库设置增加宏:QT_LARGEFILE_SUPPORT,QT_THREAD_SUPPORT,QT_DLL,QT_GUI_LIB,QT_CORE_LIB增加include路径:c:Qt4.4.3includeQtCore,c:Qt4.4.3includeQtGui,c:Qt4.4.3includeQt3Support,c:Qt4.4.3include,c:Qt4.4.3includeActiveQt增加lib路

9、径:c:Qt4.4.3libQtGuid4.lib c:Qt4.4.3libQtCored4.lib注:如需要QT3的支持,需要增加c:Qt4.4.3libQt3Supportd4.lib,和路径:c:Qt4.4.3includeQt3Support如果报错:fatal error C1010: unexpected end of file while looking for precompiled head如下设置:执行的程序带有console 如果只起界面 不要console 设置如下:把 /subsystem:console 改为:/subsystem:windows2.3.3. 编译编

10、译。添加自己代码,调试。2.4. Pro文件编写2.4.1. Pro文件说明以为例说明:TEMPLATE 定义生成类型:app 为可执行程序、lib 为生成库文件CONFIG 定义编译属性 一般有:qt warn_off debug thread等TARGET 定义生成的目标文件名称DESTDIR 定义生成目标文件的路径DEFINES 定义了外部指定的宏定义INCLUDEPATH 定义了包含头文件的路径LIBS 定义了包含的动态库文件QMAKE_CFLAGS 定义了$转译符号QMAKE_CXXFLAGS定义了$转译符号OBJECTS_DIR 定义了生成中间文件的路径

11、FORMS 定义了QT4生成的ui文件SOURCES 定义了包含的.cpp文件HEADERS 定义了包含的.h文件FORMS3 定义了QT3生成的ui文件QT += qt3support 定义了包含QT3支持CONFIG += uic3 定义了编译ui的uic为uic3unix: 定义了此定义在unix操作系统上起作用win32:定义了此定义在windows操作系统上起作用2.4.2. Pro文件编写按照格式编写pro文件或者拷贝其它pro文件到程序目录下,修改文件名和内容。Ok 上传到linux/unix上 qmake make 编译。编译完后执行。三. 动态库开发新建工程:其它步骤同 可执

12、行行程序开发四. QT3到QT4移植参考QT3到QT4移植说明.doc五. Qt4生成ui类和派生的常用方法5.1. Qt4 ui 结构以mainwindows.ui为例:Mainwindows.h #ifndef MAINWINDOW_H#define MAINWINDOW_H#include namespace Ui class MainWindow;class MainWindow : public QMainWindow Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); MainWindow();protected: v

13、oid changeEvent(QEvent *e);private: Ui:MainWindow *ui;#endif / MAINWINDOW_HMainwindows.cpp #include mainwindow.h#include ui_mainwindow.hMainWindow:MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui:MainWindow) ui-setupUi(this);MainWindow:MainWindow() delete ui;void MainWindow:changeEvent(Q

14、Event *e) QMainWindow:changeEvent(e); switch (e-type() case QEvent:LanguageChange: ui-retranslateUi(this); break; default: break; ui_ mainwindows.h#ifndef UI_MAINWINDOW_H#define UI_MAINWINDOW_HQT_BEGIN_NAMESPACEclass Ui_MainWindowpublic: void setupUi(QMainWindow *MainWindow) . / setupUi void retrans

15、lateUi(QMainWindow *MainWindow) MainWindow-setWindowTitle(QApplication:translate(MainWindow, MainWindow, 0, QApplication:UnicodeUTF8); Q_UNUSED(MainWindow); / retranslateUi;namespace Ui class MainWindow: public Ui_MainWindow ; / namespace UiQT_END_NAMESPACE#endif / UI_MAINWINDOW_H 说明:后面使用界面变量时,需要在变量

16、前加Ui5.1. Qt3 移植后的结构移植后的程序会多两个文件以avcmodplatformlib的avccoordbs类为例:avccoordbs.h#ifndef AVCCOORDBS_H#define AVCCOORDBS_H#include ui_avccoordbs.hclass avccoordbs : public Q3MainWindow, public Ui:avccoordbs Q_OBJECTpublic: avccoordbs(QWidget* parent = 0, const char* name = 0, Qt:WindowFlags fl = Qt:WType_

17、TopLevel); avccoordbs();protected slots: virtual void languageChange();#endif / AVCCOORDBS_H avccoordbs.cpp#include avccoordbs.h#include /* * Constructs a avcgbs as a child of parent, with the * name name and widget flags set to f. * */avccoordbs:avccoordbs(QWidget* parent, const char* name, Qt:Wind

18、owFlags fl) : Q3MainWindow(parent, name, fl) setupUi(this); (void)statusBar();/* * Destroys the object and frees any allocated resources */avccoordbs:avccoordbs() / no need to delete child widgets, Qt does it all for usvoid avccoordbs:languageChange() retranslateUi(this);avccoordbsimpl.hclass avccoo

19、rdbsImpl : public avccoordbs,public AVCModelPage六. Qt4与Qt3主要区别6.1. QCustomEventQT3 QCustomEvent 使用时在类里面从新实现customEvent (QCustomEvent * e)即可QT4 需要实现的函数为:customEvent (QEvent * e)QT3的程序移植时处理办法:void customEvent(QEvent * ee)QCustomEvent *e = static_cast(ee); 注意:QT4文档说明,在QT4中不提倡使用customEvent,想要实现使用QEvent6

20、.2. QPainterQT3 QPainter类由函数:moveTo、lineTo QT4 QPainter类不支持moveTo、lineTo,需要定义类QPainterPath QPainterPath 提供函数moveTo、lineTo使用如下:QPainterPath pDC_path;p-setPen(cg.button();p-setBrush(cg.button();p-drawRect(x,y,w,h);p-setPen(cg.dark();p-setPen(cg.base();int nx=x+2;int ny=y+5;pDC_path.moveTo(nx,ny);pDC_path.lineTo(x+w-2,y+5);p-drawPath(pDC_path);6.3. QstringQT3 可以直接 =NULL来判断是否为空QT4 不可以,需要通过.count() 函数返回值是否为0来判断6.4. QfileDialog函数:getOpenFileName,倒数第二个参数,原来可以为QString:null,现在只能设为字符串。QT3函数:QFileDialog:getOpenFileName( szFile, log Files(*.log);All Files(*.*), this, QString:null, _Q(请选择日志文件.) );QT4函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论