gpt4 book ai didi

c++ - Qt中如何将数据库类继承给MainWindow

转载 作者:行者123 更新时间:2023-11-28 05:57:14 24 4
gpt4 key购买 nike

我正在尝试使用 OOP 概念在 Qt 中建立数据库连接。我有一个单独的数据库连接类和数据库连接头文件。

  #ifndef DATABASECONNECTION  
#define DATABASECONNECTION
bool dbcon();
#endif // DATABASECONNECTION

这个Login.h文件

#include <QFileInfo>

namespace Ui {
class Login;
}

class Login : public QMainWindow
{
Q_OBJECT

public:
explicit Login(QWidget *parent = 0);
~Login();

private slots:
// void on_btnLogin_clicked();

void on_btnCancel_clicked();

void on_btnLog_clicked();

private:
Ui::Login *ui;
};

#endif // LOGIN_H

.这是我的 databaseconnection.cpp,它实现了 dbcon ()。

#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlDriver>
#include <QtSql/QSqlQuery>
#include <QDebug>

#include "databaseconnection.h"

DatabaseConection::DatabaseConection()
{

}
bool DatabaseConection :: dbCon()
{
QSqlDatabase db = QSqlDatabase :: addDatabase("QMSQL");
db.setHostName("localhost");
db.setDatabaseName("library");
db.setUserName("root");
db.setPassword("");
if(!db.open())
{
qDebug()<<"Database error occured";
return false;

}
else
return true;
}

我想在我的 MainWindow 中调用这个数据库连接方法,而不是在 MainWindow 中实现连接。这是我的 MainWindow 类。

#include <QtSql>

#include <QDebug>
#include <QFileInfo>
#include "login.h"
#include "databaseconection.h"
#include "ui_login.h"


Login::Login(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Login)
{
ui->setupUi(this);

dbcon();



}

Login::~Login()
{
delete ui;
}



void Login::on_btnLog_clicked()
{


}

void Login::on_btnCancel_clicked()
{

}

虽然我包含了所有的头文件,但它给出了一个错误,指出 dbcon() 超出了范围。我不知道如何在 MainWindow 类中继承 databaseconnection 类(MainWindow 类是 login.cpp)

在执行一些操作并尝试运行项目后,显示了这一点。我不知道这是为什么。请帮我弄清楚这一点。提前致谢

Starting H:\c++Prac\build-Libro-Desktop_Qt_5_5_1_MinGW_32bit-Debug\debug\Libro.exe...
The program has unexpectedly finished.
H:\c++Prac\build-Libro-Desktop_Qt_5_5_1_MinGW_32bit-Debug\debug\Libro.exe crashed

最佳答案

您的 databaseconnection.h 声明了一个独立函数 dbcon() 但在实现文件(cpp)中您定义了一个类 DatabaseConection 其中 dbcon() 是一个方法

您需要在 header (构造函数等)中正确声明 DatabaseConnection 类,然后在 MainWindow 中您可以实例化该类型的类并使用该方法。

关于c++ - Qt中如何将数据库类继承给MainWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33910988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com