浅谈VC中使用Qt库之二
来源:互联网 发布:天时网络电玩城 编辑:程序博客网 时间:2024/06/05 08:44
前面我们在vc中成功使用了Qt原生控件QMessageBox, 如何使用非原生控件呢,例如我们从QDialog继承一个类,这里qmake没起到元对象的转化功能,怎么办呢?
我们接着在前一章的工程中开发。
1.手动编写一个EdbParamaUi 继承QDialog
#include <QtWidgets/QDialog>
#include <QtCore/QObject>
class EdbParamaUi : public QDialog
{
Q_OBJECT
public:
EdbParamaUi(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags());
~EdbParamaUi();
EdbParamaUi(const EdbParamaUi &){}
};
这里一定要将EdbParamaUi(const EdbParamaUi &){}公有化写出,在我的VS2013上报错。
源文件也非常简单
#include "stdafx.h"
#include "EdbParamaUi.h"
EdbParamaUi::EdbParamaUi(QWidget *parent, Qt::WindowFlags f) :QDialog(parent, f)
{
setWindowTitle(QStringLiteral("这是Qt对话框"));
}
EdbParamaUi::~EdbParamaUi()
{
}
接下来修改代码为:
void CMFCApplication4Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//QMessageBox::information(NULL, QStringLiteral("这是Qt消息框"), QStringLiteral("这是Qt消息框"));
EdbParamaUi ui;
ui.exec();
}
运行出现:
我们看到无法连接到元对象,Qt的元对象转换是通过moc来转化的,所以我们可以手动的生成:
1.打开cmd
2.进入Qt安装目录(如果写入了环境变量就不用)
C:\Qt\Qt5.6.0\5.6\msvc2013\bin
3. 元对象文件生成
只需要头文件即可 将目标文件改为Qt固定的格式 moc_文件名.cpp即可,这样工程中就多了一个前缀为moc_的文件
我们需要将这个文件加入到工程,项目右键-》添加-》现有项-》文件
4. 重新运行
出现这个 是因为使用了预编译而文件又没有包含预编译头文件stdafx.h, 解决方法是在所有头文件中都添加#include<stdafx.h> 或者在项目配置中不使用预编译。
再次运行 点击按钮
已经成功运行。
注:元对象文件除了手动生成 还可以通过QtCreator去将界面设计好并生成moc文件 然后拷贝到自己的工程,添加到项目中,这种方法非常简单,本人也使用此方法。
下章将Qt UI封装在dll中供其他语言调用,dll是二进制级别的文件 所以与语言无关,是较好的设计方案。
- 浅谈VC中使用Qt库之二
- 浅谈VC中使用Qt库之三
- 浅谈VC中使用Qt库之四
- 浅谈VC中使用Qt库之一
- Qt浅谈之二十九Qt多线程
- Qt浅谈之二:钟表(时分秒针)
- Qt浅谈之二十二Qt样式表
- Qt浅谈之二十二Qt样式表
- Qt浅谈之二十二Qt样式表
- Qt浅谈之二十二Qt样式表
- VC中使用ADO之二--调用存储过程
- Qt浅谈之十六:TCP和UDP(之二)
- Qt浅谈之二十七进程间通信之QtDBus
- Qt浅谈之二十七进程间通信之QtDBus
- VC++生成DLL,Qt中使用DLL
- VC++生成DLL,Qt中使用DLL
- Qt浅谈之二十一log调试日志
- Qt浅谈之二十一log调试日志
- PHP实现当前文件夹下所有文件和文件夹的遍历
- Fmod studio 手机上延迟的一些处理方案
- MySQL 显示表字段及注释等信息
- Python 练习册之二
- Mysql 实现篮球比赛赛程中两支队伍的查询
- 浅谈VC中使用Qt库之二
- Android studio 出现 Unsupported major.minor version 52.0
- wamp Apache和mysql服务无法启动的终极解决方法!!!!!!
- springboot开发 第一个案例之hello,world!
- javase 基础09.05Test:
- 利用点击原理推动百度排名
- Windows环境下ELK平台的搭建
- Spring学习之路——简单入门HelloWorld
- 防止出现乱码,J2EE项目一致使用UTF-8编码设置方法