gpt4 book ai didi

c++ - 无法让 QSignalMapper 工作

转载 作者:行者123 更新时间:2023-11-28 02:31:39 25 4
gpt4 key购买 nike

我正在使用 C++ Qt 框架制作一个应用程序。我现在遇到的问题类似于提交表格。我需要向系统添加一个客户端。因此,当您单击“添加客户端”按钮时,它需要将来自 QLineEdit 的文本和来自 QDateEdit 的 QDate 提交给函数。

我研究得越多,就越觉得我必须使用 QSingalMapper,但我似乎根本无法让它工作。

这是我首先尝试使用的代码片段。我有一个客户数据结构,其中包含需要提交的名称和加入日期。但是,如果更好的话,我也可以创建 Client 对象并将其作为参数传递给 insead。

 QObject::connect(addClientBtn, SIGNAL(clicked()), this, SLOT(addClient(clientName->text(), joiningDate->date())));

当我尝试使用 QSignalMapper 时,它一直告诉我不能发送客户端对象,因为它不是 QString、Widget* 等类型。

有没有我忽略的更简单的方法?任何帮助将不胜感激。

最佳答案

如果我理解正确的话,您不需要QSignalMapper,但由于您几乎没有发布任何代码,因此很难分辨。特别是它很困难,因为我们不知道 this 是什么。但假设它是一个 QDialogQMainWindow,您必须执行以下操作:

类定义.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();
....
}

这是由于信号槽连接。 Signal 发出一个信号,其中包含发送到插槽的参数。 clicked 信号没有参数,因此它无法将任何内容发送到插槽。但是在同一个类中定义了插槽,您可以直接访问那里的数据。

注意:这仅在您的类是派生的 QObject 时有效(QDialogQMainWindow) 并且在其类定义中有 Q_OBJECT 宏。

关于c++ - 无法让 QSignalMapper 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28828256/

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