首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能让QSignalMapper工作

不能让QSignalMapper工作
EN

Stack Overflow用户
提问于 2015-03-03 09:30:12
回答 1查看 151关注 0票数 0

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

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

下面是我试图首先使用的代码片段。我有一个客户端数据结构,需要提交的名称和连接日期。不过,我也可以创建客户机对象,并将其作为参数insead传递,如果这样做更好的话。

代码语言:javascript
复制
 QObject::connect(addClientBtn, SIGNAL(clicked()), this, SLOT(addClient(clientName->text(), joiningDate->date())));

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

也许有更简单的方法来做这件事我忽略了吗?任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-03 09:41:09

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

类定义中的 .h

代码语言:javascript
复制
...
protected slots:
    void add_client();
...

类中的实现 .cpp

代码语言:javascript
复制
mydialogormainwindow::mydialogormainwindow(){

    QObject::connect(addClientBtn, SIGNAL(clicked()), this, SLOT(addClient()));
}

void mydialogormainwindow::add_client(){

    QString name = clientName->text();
    QDate date = joiningDate->date();
    ....
}

这是信号插槽连接造成的.所述信号发送包括发送到所述时隙的参数的信号。点击的信号没有参数,所以它不能向插槽发送任何东西。但是,在同一个类中定义槽时,您可以直接访问那里的数据。

注意:只有当类是派生的QObject (对于QDialogQMainWindow是这种情况)并在类定义中包含Q_OBJECT宏时,才能工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28828256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档