您的位置:首页 > 编程语言 > Qt开发

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: 后只跟待绑定的函数

本人只是小白,只因在学习过程中遇到了这个小问题,纠缠了两天,因感慨写下本文章。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Magicfairyking 发布了1 篇原创文章 · 获赞 0 · 访问量 56 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐