我正在使用qt-creator构建一个小型QT应用程序。
我有一个主窗口,我有一些控件,如“新联系人”按钮。 按下按钮显示QDialog,它包含3行编辑:姓名,手机和电子邮件。
通过Signal / Slot系统显示对话框。它工作正常但我想在单击OK时创建一个Contact对象,我想将该Contact返回到我的主窗口,以便将它放入在主窗口代码中创建的QList中。
方法是: QMainWindow - >新联系 - >显示QDialog
QDialog - >好的 - > QMainWindow
我应该将QList从主窗口传递给QDialog作为参数还是有最好的方法?
答案 0 :(得分:0)
我应该将QList从主窗口传递给QDialog作为参数还是有最好的方法?
在我看来,最好的是自定义QDialog子类,其中包含三个QLabel和3个QLineEdit s。
标签会获得以下类型的值:
标签1:名称
标签2:mobileNumber
标签3:电子邮件
您可以使用QLabel和QLineEdits来显示来自用户的输入。
然后,正如你的程序可能已经做的那样,只需分别处理“accept”事件。您可以使用以下方法检索最终用户输入的文本:
此属性包含行编辑的文本。
设置此属性将清除选择,清除撤消/重做历史记录,将光标移动到行尾并将修改后的属性重置为false。使用setText()插入时,不验证文本。
文本被截断为maxLength()长度。
默认情况下,此属性包含空字符串。
然后,在accepted signal的处理程序中,您可以调用三种访问器方法,例如:
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;
答案 1 :(得分:0)
创建QDialog的子类。调用Yourclass :: exec()来显示对话框(exec是QDialog中的函数),然后调用Yourclass :: contactDetails()来获取它们。 contactDetails是一个非常普通的成员函数,你必须写。