MFC中调用QT类库

前面已经讲过了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,难免有不足之处,恳请批评指出。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值