VS2019 + Qt 5.12.3 报moc错误的可能解决方法之一
2020-03-05 15:50
1261 查看
VS2019 + Qt 5.12.3 报moc错误的可能解决方法之一
报错如图
原本目的
父窗口连接数据库,将QSqlDatabase 的地址传给 “登陆” 子窗口。
部分代码
Father.h
#include "Login.h"
public: QSqlDatabase database; Login login; void InitDataBase(); signals: void SendSql(QSqlDatabase* pd); public: //--- 其他代码
Father.cpp
Father::Father(QWidget *parent) : QMainWindow(parent) { InitDataBase(); connect(this, &Father::SendSql, &login, &Login::getSql); emit SendSql(&database); login.exec(); ui.setupUi(this); } void Father::InitDataBase() { database = QSqlDatabase::addDatabase("QMYSQL"); //驱动 database.setHostName("localhost"); //数据库地址,一般都是本地,就填localhost就可以 database.setDatabaseName("test"); //数据库名,根据你Mysql里面的数据库名称来填写,比如我Mysql里面有个数据库叫test,可以用Navicat软件看自己的数据库名字 database.setUserName("root"); //用户名,一般是本地用户,就填root就可以 database.setPassword("123456"); //密码,填写你自己的Mysql登陆密码 //database.setPort(3306); //端口默认的是3306,可以不用写 if (database.open()) { QMessageBox::warning(this, QString::fromUtf8("提示"), QString::fromUtf8("打开成功!"), QMessageBox::Yes); } else { QMessageBox::warning(this, QString::fromUtf8("提示"), QString::fromUtf8("打开失败!"), QMessageBox::Yes); } }
Login.h
#include <QSqlDatabase> #include <QSqlQuery> #include <QSqlQueryModel> #include <QMessageBox>
public slots: void getSql(QSqlDatabase*); QSqlDatabase* sql; //记住这个地方 public: //--- 其他代码
Login.cpp
void Login::getSql(QSqlDatabase* psql) { sql = psql; QMessageBox::warning(NULL, QString::fromUtf8("提示"), QString::fromUtf8("GOOD!"), QMessageBox::Yes); }
解决过程
因为代码本来没多少东西,所以用Qt Creator重做了一份,然后。。。
在Login.h里
public slots: void getSql(QSqlDatabase*); QSqlDatabase* sql; //这里编译后Qt Creator会报错,VS不报错 //报“ Error: Not a signal or slot declaration ”错误 public: //--- 其他代码
然后改成
QSqlDatabase* sql; public slots: void getSql(QSqlDatabase*); public: //--- 其他代码
就没问题了
总结
在 slots: 后只跟待绑定的函数
本人只是小白,只因在学习过程中遇到了这个小问题,纠缠了两天,因感慨写下本文章。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- VS 下Qt工程不能生成moc文件的解决方法
- Run Qt5.6 on VS2015 & “无法迁移项目文件” & "Cannot instantiate QtProjectEngine object"错误的解决方法
- Run Qt5.6 on VS2015 & “无法迁移项目文件” & "Cannot instantiate QtProjectEngine object"错误的解决方法
- vs 2005 express 版本 关于debug 调试时显示 无法找到msvcr80d.dll的错误 解决方法
- libnids 在VS 2010中使用方法及编译错误解决方法
- VS.NET常见错误及解决方法集锦
- “在应用程序级别之外使用注册为 allowDefinition=’MachineToApplication’ 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误”的解决方法。
- Ubuntu 下 QT4 编译错误解决方法
- Silverlight WCF "尝试向 URI发出请求时出错。这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略" 错误的解决方法
- 此网页的安全性验证无效并且可能损坏的错误的解决方法
- VS2003下DirectShow范例程序LNK2019编译错误的解决方法
- Windows 7下VS引用Com组建编译错误的一个解决方法
- Qt + SQLite3 + VS 开发时出现乱码的解决方法
- 编译Qt“NMAKE:fatal error U1077”错误的解决方法
- qt 连接sqlserver 出现 “未发现数据源名称并且未指定默认驱动程序”的错误解决方法
- Linux PC和ARM版的QT环境设置及到ARM移植&常见错误解决方法
- 解决“ .dll(或.ocx)控件已加载,但对DllregisterServer的调用失败,错误代码为0x80004005”问题的两种终极方法:SubInACL安装 VS 命令提示符
- 先装VS后装IIS错误的解决方法
- VS.NET常见错误及解决方法集锦
- Qt中的Exited with code 2错误和解决方法