MFC中调用QT类库
来源:互联网 发布:评价火星哥的唱功知乎 编辑:程序博客网 时间:2024/05/20 23:08
前面已经讲过了QT在VS2005平台的安装与编译。
具体见http://tianjiangood.blog.163.com/blog/static/2601115620085625458948/
经过几天的学习,感觉QT功能很强大哈。封装的类库中比较完善。可以完全象MFC那样单独使用。也可以作为MFC的一个补充。QT可以象调用其他其他用C++写的类一样调用。
只不过可能比较复杂,关键是头文件还有库文件的确定。QT相应的类的头文件名与类名相同,可以在QT安装目录下的include目录下直接搜索相应的文件名,得到文件路径。库文件的确定可以从库文件的命名方式理解,库文件都是按照功能来命名的,主要的库文件是QTCore4.lib,QtGui4.lib,QTCored4.lib,QtGuid4.lib。(声明我的QT版本是QT4.3.4)。同时程序发布必须包含与库文件同名dll文件。这个大家应该都知道,哈哈。头文件的包含工作可以写在VC项目中的stdafx.h中。下面以两个例子具体介绍一下。
两个例子分别是在MFC对话框按钮消息响应 :弹出一个QMessageBox对话框,弹出一个用采用自定义的QT对话框。
一. 由于开发的是GUI应用程序,所以必须包含QApplication对象,因此必须包含头文件QApplication.h.否则会程序会异常终止运行。QApplication对象必须是全局的,因此定义QApplication的工作可以在MFC应用程序对象定义之前。
另外应用程序使用的字符集的声明,一般情况下应用程序的菜单,按钮,标签等均为中文字符,这就需要支持中文字符,需要在应用程序启动之前实现,因此可以在MFC应用程序对象的构造函数中实现,同时需要包含头文件QTextCodec.h,具体语句如下:QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));现在的PC平台必须支持GB18030。如果不加这个可能中文显示为乱码。
二. 弹出QMessageBox对话框实例。这个比较简单,这个只需要包含QMessageBox的声明头文件QMessageBox.h即可,
QMessageBox dlg;
dlg.setIcon(QMessageBox::Question);
dlg.warning(0,QObject::tr("waring"),QObject::tr("this is messagebox used by qt create!"),QMessageBox::Ok)
三.弹出自定义对话框(不放假设类名为MYDlg)。并且自定义对话框支持信号和槽。所以必须有Q_OBJECT宏。这里必须提一下QT的元对象系统(Meta_Object System),在该模型的基础上,提供了对象间通信机制:信号和槽。元对象系统基于三个事实:
1.基类QObject,任何想使用元对象系统的对象必须直接或者间接继承自QObject;
2.Q_OBJECT宏,Q_OBJECT宏必须出现在类的私有声明区,以启动元对象的特性;
3.元对象编译器(Meta_Object Compiler,moc),为QObject子类实现元对象提供必要的代码实现。以MyDlg.h为例说明,在编译应用程序时,moc会根据自定义的类产生另一个C++源文件,默认的名字为moc_MyDlg.cpp,改源文件包含了元对象代码的实现。
因此必须把该文件添加到VC工程中,否则会出现连接错误,找不到类的定义VC2005为link2001错误。
而该文件得到的方法是,如果MyDlg.h,MyDlg.cpp文件已经存在, 利用qmake生成一个包含MyDlg类的工程,同时用相应的C++编译器编译,得到moc_MyDlg.cpp文件。估计应该还有更简单的方法得到moc文件。
总结:实际上,QT也是一个用标准的C++语法写的一个类库,但同时又在标准C++的基础上增加了一些特性,如信号和槽。
上述文字属于个人经验,由于刚接触QT,难免有不足之处,恳请批评指出。
- MFC中调用QT类库
- MFC调用Qt中的类
- mfc调用qt的dll
- Qt中使用MFC
- mfc中调用cout
- MFC中DLL调用
- MFC中调用DLL
- MFC中 调用控制台
- MFC中调用Python
- qt 中调用QML
- 简单快捷解决caffe源代码在其他工程(MFC、QT、win32)中调用的问题
- MFC中创建QT窗体
- MFC中创建QT窗体
- MFC使用Qt类库
- MFC中调用EXE文件
- MFC中调用WPF教程
- MFC中调用WPF教程
- 在MFC中调用DLL
- STUN, STUNT, XSTUNT
- 领域驱动设计DDD
- flash 透明
- Gridland
- 几个完成端口API简介
- MFC中调用QT类库
- aspx 生成 html 静态页
- 基于多线程的c/s socket类
- 数据库插入记录并返回主键
- java解析xml文件四种方式
- 编程的乐趣与苦恼
- oracle命令 建立用户和对用户的管理
- 让WPF Browser Application自动下载并安装数字证书
- 银行二道门解决方案