【发布时间】:2012-04-08 20:08:56
【问题描述】:
我正在尝试制作一个程序,该程序从一个类中获取信号并激活该信号,我想激活第二类中的一个插槽。
在我的例子中,第一个类是 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)));
我无法使类之间的这种信号/插槽连接正常工作。你能给我任何帮助吗?
如果您对代码有任何疑问,请提出。抱歉英语不好,我不是以英语为母语的人。
非常感谢您的帮助。
【问题讨论】:
-
编译器给出什么错误?你在哪里实例化这两个类?
-
如果代码编译成功,请注意stdout或调试输出——如果Qt需要调用一个信号并且找不到连接的槽,它会打印一些东西。
-
@alexisdm 这是以下输出:Starting /home/kudic/untitled136-build-desktop/untitled136... /home/kudic/untitled136-build-desktop/untitled136 exited with code 0
-
我在 main.cpp 中实例化了两个类,我也在 main.cpp 中调用 QObject::connect
-
QObject::connect 返回布尔值,尝试通过检查其返回值来检查连接是否成功