gpt4 book ai didi

c++ - 在 Qt 中的两个类之间发出信号

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:10 25 4
gpt4 key购买 nike

我正在尝试制作一个程序,该程序从一类获取信号,并在激活该信号后我想激活二类中的插槽。

在我的例子中,第一个类是 mainWindow 类,这个类是 QMainWindow 的子类,在这个类中是我要激活的插槽。

这是 mainWindow.cpp:

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

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

void mainWindow::slotForStatusBarMessage(QString string)
{
statusBar()->showMessage(string);
}

第二个类是mainWidget类,它是QWidget的子类。

这是 mainWidget.cpp:

mainWidget::mainWidget(QWidget *parent) :
QWidget(parent)
{
buttonAddNewRecord=new QPushButton("Add new record", this);

layoutButton=new QHBoxLayout();
layoutButton->addWidget(buttonAddNewRecord);

layoutMain=new QVBoxLayout();
layoutMain->addLayout(layoutButton);

functionDatabaseOpen();

setLayout(layoutMain);
}

信号从 functionDatabaseOpen() 函数发出:

if (sqlDatabase.open())
{
emit signalForShowMessageInStatusBar("true");
}
else
{
emit signalForShowMessageInStatusBar("false");
}

我已经对数据库进行了所有设置,但由于空间原因我没有复制到这里。

我试图在 main.cpp 中建立连接,但它似乎不起作用。

QObject::connect(mw, SIGNAL(signalForShowMessageInStatusBar(QString)), w, SLOT(slotForStatusBarMessage(QString)));

我无法使类之间的信号/槽连接正常工作。你能帮我什么忙吗?

如果您对代码有任何疑问,请询问。抱歉英语不好,我不是英语母语者。

非常感谢您的帮助。

最佳答案

您正在从 mainWidget 的构造函数发出信号,并且由于连接仅在您从该构造函数返回后才完成,所以信号不会去任何地方。

最简单的修复方法,不知道其余代码是什么样子,将调用移动到 main() 中的 functionDatabaseOpen() 信号/插槽连接已完成。

关于c++ - 在 Qt 中的两个类之间发出信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066094/

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