• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

QDialog接受返回自定义类对象

c/c++ 来源:user1638466 3次浏览

我正在使用qt-creator来构建一个小QT应用程序。QDialog接受返回自定义类对象

我有一个主窗口,我有一些像“新联系人”按钮的控件。 显示QDialog按钮,它包含3行编辑:姓名,手机和电子邮件。

该对话框通过信号/插槽系统显示。它工作正常,但我想创建一个Contact对象,当单击OK时,我想将该Contact添加到我的主窗口,以便将它放入在主窗口代码中创建的QList中。

其做法是: 的QMainWindow – >新的联系人 – >了QDialog示

QDialog的 – >确定 – >的QMainWindow

我应该从主窗口传递的QList到QDialog的作为参数或有是最好的方式?


===========解决方案如下:

我应该将QList从主窗口传递给QDialog作为参数还是有最佳方法?

在我看来,最好的将是一个自定义的QDialog子类有三个QLabel秒和3 QLineEdit秒。

标签将得到以下类型的值:

  • 标签1:命名

  • 标签2:移动电话号码

  • 标签3:电子邮件

您可以使用QLabels和QLineEdits将它们与输入一起显示来自用户。

然后,你的程序可能已经做了,分别处理“accept”事件。你可以用下面的方法来获取最终用户输入的文本:

text : QString

这个属性保存行编辑的文本。

设置此属性将清除选择内容,清除撤消/重做历史记录,将光标移动到行尾并将修改后的属性重置为false。使用setText()插入时,文本未经验证。

该文本被截断为maxLength()长度。

默认情况下,此属性包含一个空字符串。

然后,在accepted signal的处理程序,你可以召唤3种存取方法,如:

  • 即QString名()const的{返回nameLineEdit->文本(); }

  • QString mobileNumber()const {return mobileNumberLineEdit-> text(); }

  • QString email()const {return emailLineEdit-> text(); }

你也可以存储在一个专门的结构取决于你建立你的数据表示,这样的结构是这样的:

struct Contact { 
    QString name; 
    QString mobileNumber; 
    QString email; 
}; 

,然后你会为这个访问如下

Contact contact() const; 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)