gpt4 book ai didi

c++ - Qt Connect 无法连接到插槽

转载 作者:行者123 更新时间:2023-11-28 03:04:56 26 4
gpt4 key购买 nike

在遇到这个问题之前,我对在 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));

...
}

最佳答案

您的代码很好,您只需清理项目、qmake,然后构建。由于您已经编辑了代码但没有对其进行 qmake,因此未正确调用元对象编译器来更新 moc 生成文件中的更改,因此插槽实际上并未连接。

关于c++ - Qt Connect 无法连接到插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19967801/

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