在遇到此问题之前,我没有将信号连接到Qt中的插槽的问题。当我点击我的工具按钮(btnNR)时,我无法连接到插槽。
插槽调用另一个小部件显示。我很确定连接信号格式正确。但是,不调用插槽。有人可以帮忙吗?
SetMalDlg.h:
#pragma once
#include <QDialog>
#include <QtGui>
class SetMalDlgInjRem;
class SetMalDlg : public QDialog
{
Q_OBJECT
public:
SetMalDlg(void);
~SetMalDlg(void);
SetMalInjRem *malInjRem;
public slots:
void slot_SetMalDlgInjRem();
public:
void createLayout();
...
};
SetMalDlg.cpp:
#include "SetMalDlg.h"
#include "SetMalDlgInjRem.h"
SetMalDlg::SetMalDlg(void)
{
malInjRem = new SetMalDlgInjRem;
createLayout();
connect(btnNR, SIGNAL(clicked()), this, SLOT(slot_SetMalDlgInjRem()));
setWindowModality(Qt::WindowModal);
}
SetMalDlg::~SetMalDlg(void)
{
disconnect(btnNR, SIGNAL(clicked()), this, SLOT(slot_SetMalDlgInjRem()));
}
void SetMalDlg::createLayout()
{
...
// create btnNR here
...
}
void SetMalDlg::slot_SetMalDlgInjRem()
{
malInjRem->show();
}
SetMalDlgInjRem.h:
#pragma once
#include <QDialog>
#include <QtGui>
class SetMalDlgInjRem : public QDialog
{
Q_OBJECT
public:
SetMalDlgInjRem(void);
~SetMalDlgInjRem(void);
public:
void createLayout();
...
};
SetMalDlgInjRem.cpp:
#include "SetMalDlgInjRem.h"
#include <QtGui>
SetMalDlgInjRem::SetMalDlgInjRem(void)
{
createLayout();
setWindowModality(Qt::WindowModal);
}
SetMalDlgInjRem::~SetMalDlgInjRem(void)
{
}
void SetMalDlgInjRem::createLayout()
{
this->resize(1033, 452);
labelMalInjRem = new QLabel(this);
labelMalInjRem->setText("Text");
labelMalInjRem->setGeometry(QRect(10, 10, 301, 31));
...
}
答案 0 :(得分:2)
您的代码很好,您必须清理项目,qmake然后构建。由于您编辑了代码但没有编写代码,因此未正确调用元对象编译器来更新moc生成的文件中的更改,因此插槽实际上并未连接。