我正在使用C++ Qt框架创建一个应用程序。我目前遇到的问题类似于提交一份表格。我需要给系统增加一个客户端。因此,当您单击"Add“按钮时,它需要将来自QLineEdit的文本和来自QDateEdit的QDate提交到函数中。
我研究得越多,我似乎就越需要使用QSingalMapper,但我似乎根本无法让它工作。
下面是我试图首先使用的代码片段。我有一个客户端数据结构,需要提交的名称和连接日期。不过,我也可以创建客户机对象,并将其作为参数insead传递,如果这样做更好的话。
QObject::connect(addClientBtn, SIGNAL(clicked()), this, SLOT(addClient(clientName->text(), joiningDate->date())));当我尝试使用QSignalMapper时,它一直告诉我不能发送客户端对象,因为它的类型不是QString、Widget*等等。
也许有更简单的方法来做这件事我忽略了吗?任何帮助都将不胜感激。
发布于 2015-03-03 09:41:09
如果我对您的理解正确,您不需要QSignalMapper,但是很难分辨,因为您几乎没有发布任何代码。特别是,它是困难的,因为我们不知道this是什么。但是,假设它是一个QDialog或QMainWindow,您必须按照以下步骤进行操作:
类定义中的 .h
...
protected slots:
void add_client();
...类中的实现 .cpp
mydialogormainwindow::mydialogormainwindow(){
QObject::connect(addClientBtn, SIGNAL(clicked()), this, SLOT(addClient()));
}
void mydialogormainwindow::add_client(){
QString name = clientName->text();
QDate date = joiningDate->date();
....
}这是信号插槽连接造成的.所述信号发送包括发送到所述时隙的参数的信号。点击的信号没有参数,所以它不能向插槽发送任何东西。但是,在同一个类中定义槽时,您可以直接访问那里的数据。
注意:只有当类是派生的QObject (对于QDialog和QMainWindow是这种情况)并在类定义中包含Q_OBJECT宏时,才能工作。
https://stackoverflow.com/questions/28828256
复制相似问题