我试图创建一个包含一些文本输入字段的新对话框。单击按钮(作为确认)时,这些文本区域必须插入到自定义类向量中(通过现有方法)。
我的疑问是,我如何使用connect函数传递自定义类作为参考?我是非常新手,请原谅我的愚蠢。 这是我的代码(的一部分)。
#include "aggiungi.h"
#include "ui_aggiungi.h"
aggiungi::aggiungi(clienti& c, QWidget *parent) :
QDialog(parent),
ui(new Ui::aggiungi)
{
ui->setupUi(this);
connect(ui->inserisci,SIGNAL(clicked()),this,SLOT(pulsanteInserisci(c)));
}
aggiungi::~aggiungi()
{
delete ui;
}
void aggiungi::pulsanteInserisci(clienti& c) {
string nome = ui->textNome->toPlainText().toStdString();
unsigned int cc = ui->textCod->toPlainText().toUInt();
string piva = ui->textPIva->toPlainText().toStdString();
cliente* nc = new cliente(nome,cc,piva);
c.aggiungi(*nc);
}
我想要的是能够通过" clienti"对象以便在单击按钮时执行命令。这个解决方案(显然)不起作用,但我该如何纠正呢?你的建议是什么?
我还会粘贴我从应用程序输出中退出的错误:
QObject::connect: No such slot aggiungi::pulsanteInserisci(c)
in..\Progetto2016\git\database\aggiungi.cpp:9
QObject::connect: (sender name: 'inserisci')
QObject::connect: (receiver name: 'aggiungi')
提前致谢
答案 0 :(得分:3)
您无法将值传递给SIGNAL()
或SLOT()
宏。您必须传递签名。此外,信号和插槽必须兼容。换句话说,签名必须匹配。有关详细信息,请参阅documentation。
话虽如此,您无法将按钮的clicked()
信号连接到需要任何参数的插槽。一个简单的解决方案是将clienti
存储为成员变量,并使用pulsanteInserisci()
中的成员变量。
答案 1 :(得分:0)
连接应该是:
连接(UI-> inserisci,SIGNAL(点击(clienti&安培)),对此,SLOT(pulsanteInserisci(clienti&安培;)));
或
连接(UI-> inserisci,SIGNAL(点击()),对此,SLOT(pulsanteInserisci()));