accept上的QDialog返回自定义类对象
QDialog on accept return custom class object
我正在使用qt-creator来构建一个小的qt应用程序。
我有一个主窗口,在那里我有一些控件,比如"新联系人"按钮。按下按钮,会显示一个Q对话框,其中包含3行编辑:姓名、手机和电子邮件。
该对话框通过信号/插槽系统显示。它工作得很好,但我想在单击"确定"时创建一个Contact对象,并且我想将该Contact返回到我的主窗口,以便将其放入在主窗口代码中创建的QList中。
方法是:QMainWindow->新联系人->显示的Q对话框
Q对话框->确定->Q主窗口
我应该将QList从主窗口传递到QDialog作为参数,还是有最好的方法?
我应该将QList从主窗口传递到QDialog作为参数,还是有最好的方法?
在我看来,最好是一个带有三个QLabel和三个QLineEdits的自定义QDialog子类。
标签将获得以下类型的值:
-
标签1:名称
-
标签2:手机号码
-
标签3:电子邮件
您将使用QLabels和QLineEdits来显示它们以及来自用户的输入。
然后,正如您的程序可能已经做的那样,只需处理";接受";事件。您可以使用以下方法来检索最终用户输入的文本:
text:QString
此属性保存行编辑的文本。
设置此属性将清除选择,清除撤消/重做历史记录,将光标移动到行的末尾,并将修改后的属性重置为false。使用setText()插入文本时,不会验证文本。
文本被截断为maxLength()长度。
默认情况下,此属性包含一个空字符串。
然后,在接受信号的处理程序中,您可以调用三个访问器方法,如:
-
QString name()const{return nameLineEdit->text();}
-
QString mobileNumber()const{return mobileNumberLineEdit->text();}
-
QString email()const{return emailLineEdit->text();}
根据您构建的数据表示,您也可以将其存储在一个专用结构中,因此结构如下:
struct Contact {
QString name;
QString mobileNumber;
QString email;
};
然后你会有如下的访问者
Contact contact() const;
创建QDialog的子类。调用Yourclass::exec()来显示对话框(exec是QDialog中的一个函数),然后调用Yourcass::contactDetails()来获取它们。contactDetails是一个非常普通的成员函数,您必须编写它。
- 自定义对象的dlib序列化在gcc中失败
- 如何将带有自定义对象的容器从C++传递到QML
- 将 exprtk 与自定义类的对象一起使用
- 将 RTOS 队列对象封装在仅具有静态分配的 IQueue 自定义接口中
- 如何实现自定义匹配器以检查 Catch2 中的对象相等性
- 如何使用Q_PROPERTY公开自定义对象列表
- Qt5 远程对象 + 自定义类型,但不在 POD 中
- 从自定义类获取对象向量中的 max 元素
- 如何将来自 Boost.Python 的map_indexing_suite与自定义而不是标准对象一起使用?
- 如何在自定义对象的<<运算符中添加自定义前缀
- 如何使用 STL 排序对具有模板专用化的自定义类对象进行排序?
- 如何从 cpp 中的函数返回自定义类对象?
- 如何为自定义模板对象创建专门的函数模板
- 带有自定义deleter的std::unique_ptr对象的大小(一个由ref捕获的lambda)
- 基于3个对象的自定义排序
- 如何键入用于const对象的自定义io操纵器
- 指向临时对象的自定义迭代器(延迟加载)
- 将自定义对象作为参数从目标 C 传递到 C++
- 从 Arduino 中的自定义C++库构造对象时出错
- 从链表访问对象(自定义实现)