gpt4 book ai didi

c++ - Qt - 2 类中的信号和槽

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

我正在“玩”Qt 中的信号和槽。我制作了 2 个类(MainWindow、DatabaseManager)

数据库管理器.h

class DatabaseManager : public QObject
{
Q_OBJECT
QSqlDatabase database;
public:
DatabaseManager();
signals:
void TextSignal(const QString);
};

数据库管理器.cpp

DatabaseManager::DatabaseManager()
{
database = QSqlDatabase::addDatabase("QSQLITE");
database.setDatabaseName("database.sqlite");

if( !database.open() )
qDebug() << "Cannot open connection with database";
else
{
emit TextSignal("Connected");
qDebug() << "Connected";
}
}

主窗口.h

class MainWindow : public QMainWindow
{
Q_OBJECT

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

private slots:
void WriteText(const QString text);

private:
Ui::MainWindow *ui;
DatabaseManager db;
};

主窗口.cpp

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QObject::connect(&db,SIGNAL(TextSignal(QString)),this,SLOT(WriteText(QString)) );
}

void MainWindow::WriteText(const QString text)
{
ui->textEdit->append(text);
}

这是我的问题 - 我做错了什么?在调试窗口中打印调试文本“已连接”,但未在文本编辑中显示。

最佳答案

之前调用了 db 对象的构造函数(甚至在 mainWindow 构造函数和 setupUi 之前)。

私有(private): 用户界面::主窗口*用户界面; 数据库管理数据库;

QObject::connect(&db,SIGNAL(TextSignal(QString)),this,SLOT(WriteText(QString))

信号在连接之前和创建 ui->textEdit 之前发出。

关于c++ - Qt - 2 类中的信号和槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40448597/

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