【问题标题】:Passing Ui::MainWindow *ui as argument in QT - Why can't I use ui-> then? [duplicate]在 QT 中将 Ui::MainWindow *ui 作为参数传递 - 为什么我不能使用 ui-> 那么? [复制]
【发布时间】:2021-10-14 01:48:57
【问题描述】:

我有一个名为MainWindow 的课程。它是 QT C++ 中的标准主窗口。 (我是一名C开发人员,但是因为GUI框架QT我才学C++)

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

然后我有另一个类叫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

我的问题是这些函数

    void connect(Ui::MainWindow *ui);
    void disconnect(Ui::MainWindow *ui);

当我用函数调用它们时

void MainWindow::on_connect_sql_pushButton_clicked(){
    database.connect(this->ui);
}

然后在数据库对象内部我无法使用ui-> 访问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());

错误是

database.cpp:12:38: error: member access into incomplete type 'Ui::MainWindow'
mainwindow.h:13:22: note: forward declaration of 'Ui::MainWindow'

那么我在这里做错了什么?为什么我不能传递参数this->ui 然后在database 对象中使用它?

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    我现在找到了解决方案。

    我忘了导入

    #include "ui_mainwindow.h"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-15
      • 2021-09-26
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多