I have a class called MainWindow
. It's standard main windows in QT C++. (I'm a C developer, but I have just learn C++ because of the GUI framework QT)
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(Database &database, QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_connect_sql_pushButton_clicked();
void on_disconnect_sql_pushButton_clicked();
private:
Ui::MainWindow *ui;
Database database;
};
#endif // MAINWINDOW_H
Then I have another class called Database
/* Windows */
#include "mainwindow.h"
class Database
{
public:
Database();
Database(QSqlDatabase &db);
void connect(Ui::MainWindow *ui);
void disconnect(Ui::MainWindow *ui);
private:
QSqlDatabase qSqlDatabase;
};
#endif // DATABASE_H
My issue here is these functions
void connect(Ui::MainWindow *ui);
void disconnect(Ui::MainWindow *ui);
When I call them with the function
void MainWindow::on_connect_sql_pushButton_clicked(){
database.connect(this->ui);
}
Then inside the database object I cannot access ui
with ui->
void Database::connect(Ui::MainWindow *ui){
/* Set connections */
this->qSqlDatabase.setHostName(ui->sql_host_lineEdit->text());
this->qSqlDatabase.setPort(ui->sql_port_lineEdit->text().toInt());
this->qSqlDatabase.setDatabaseName(ui->sql_database_lineEdit->text());
this->qSqlDatabase.setUserName(ui->sql_username_lineEdit->text());
this->qSqlDatabase.setPassword(ui->sql_password_lineEdit->text());
The errors are
database.cpp:12:38: error: member access into incomplete type 'Ui::MainWindow'
mainwindow.h:13:22: note: forward declaration of 'Ui::MainWindow'
So what am I doig wrong here? Why can't I pass the argument this->ui
and then use it inside the database
object?