传递自定义类来连接(信号和插槽)
Passing custom class to connect (signals and slot)
我正在尝试创建一个新的对话框与一些文本输入字段。在单击按钮(作为确认)时,必须将这些文本区域插入到自定义类向量中(通过现有方法)。
我的疑问是,我怎么能适合连接函数传递自定义类作为引用?在这方面我是新手,请原谅我的笨手笨脚。这是我代码的一部分。
#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..Progetto2016gitdatabaseaggiungi.cpp:9
QObject::connect: (sender name: 'inserisci')
QObject::connect: (receiver name: 'aggiungi')
Thanks in advance
不能向SIGNAL()
或SLOT()
宏传递值。必须通过签名。此外,信号和插槽必须兼容。换句话说,签名必须匹配。详细信息请参见文档
话虽如此,你无法将按钮的clicked()
信号连接到需要任何参数的插槽。一个简单的解决方案是将clienti
存储为成员变量,并在pulsanteInserisci()
中使用该成员变量。
connect应为:
连接(ui -> inserisci,信号(点击(clienti&)),槽(pulsanteInserisci (clienti&))),
或
连接(ui -> inserisci,信号(点击()),槽(pulsanteInserisci ())),
相关文章:
- 控制带有信号/插槽的Qt QML滑动视图
- Qt 信号/插槽问题
- Qt moveToThread,带有参数的信号/插槽
- moc 文件中缺少信号插槽
- 文档在哪里说明如果参数不是从末端删除参数,则无法从QT信号插槽连接中删除参数?
- 信号/插槽多线程 Qt
- 通过排队的QT信号插槽连接发送QSHAREDPOINTERS的QVECTOR
- Qimage没有通过信号插槽QT
- 使用 Qt5 的新信号/插槽实现向滑块发出信号
- 一个类中的QT信号/插槽,但从不同的线程发出
- 信号/插槽基类多继承
- 在QT C 中使用QMOVIE和信号/插槽之间在GIF中导航
- 在 for 循环中使用 lambda 函数连接信号插槽
- 不同类别的 2 个对象之间的信号/插槽
- 如何正确使用qt的信号/插槽系统
- Qt信号插槽视觉工作室:似乎未连接
- QACTION信号插槽中的无形UI
- Qt-连接触发动作中的信号/插槽
- Qt 信号插槽类范围类型
- 信号/插槽 Qt5 C++