打开另一个表单,然后等待该表单返回响应
Open another form and then wait for that form to return a response
我目前有一个表单,比如a,需要一些输入。然而,为了获得该输入,需要填写另一个表格,比如B。所以我想要的是,当用户点击表格a中的按钮时,表格B就会显示出来。现在,当点击表单B中的按钮时,结果将返回到表单a。最好的方法是什么?目前我有一个只显示表格B的表格a,然后我就被卡住了。有什么建议吗?
您可能希望从QDialog
类继承formB
,然后调用exec()
而不是show()
。
来自文档:
将对话框显示为模式对话框,在用户关闭它之前进行阻塞。函数返回DialogCode结果。
如果对话框是应用程序模式的,则用户在关闭对话框之前无法与同一应用程序中的任何其他窗口进行交互。如果对话框是窗口模式的,则在对话框打开时,仅阻止与父窗口的交互。默认情况下,该对话框是应用程序模式对话框。
同时,您可能希望在formB
中使用QDialog::accept
、QDialog::reject
或QDialog::setResult
,以便将结果传递给formA
。
考虑到您正在使用Qt,最简单的方法是使用信号和插槽。当按下该按钮时,您可以使FormB
发出包含所需数据的信号。可以使FormA
连接到该信号并填写其表格
这个示例代码非常抽象,但您应该能够获得一般意义-
void FormA::slotButtonClicked() {
FormB* b = new FormB(this);
connect(b, SIGNAL(requiredData(QVariant)),
this, SLOT(slotFormBData(QVariant())));
// Logic to show form B
}
void FormA::slotFormBData(const QVariant& data) {
// Fill Form A fields with data
}
void FormB::slotButtonClicked() {
QString data = m_lineEdit->text();
emit requiredData(data);
}
如果不想通过信号发送所有数据,也可以让FormB
发送done(FormB*)
信号,FormA
可以挂接该信号,然后调用FormB
的成员函数来获取所有所需的数据。
相关文章:
- GTK 最大化表单 C++
- win 表单应用程序字符串^ 到 int
- 结构化绑定初始值设定项表单 { 赋值表达式 } 对于 clang 上的数组类型失败
- 可以在JSON文件的帮助下在Qt中创建UI表单
- 表单未显示在凭据提供程序中
- 表单显示对话框函数错误,并且不执行下面的语句
- 如何从 winapi 中的编辑表单获取文本?
- 在 cout 中将线条表单文件与自定义文本组合时出现问题
- 从 dll 调用 opencv 垫到 Windows 表单,图像出现故障
- 如何在不使用任何数据库的情况下制作动态注册表单?
- 家庭作业帮助 - 检查表单按钮上的数据
- C++ 在给定像素数据数组的表单上绘制矩形
- 复制初始化表单 '= {}'
- 如何创建第二个 QT .ui 表单
- 如何将变量从一个表单传递到另一个表单
- 如何从另一个Qt Widget表单类调用MainWindow类
- 在表单 QT 上的小部件内绘制
- 如何从QtQuickWidget加载qt快速UI表单
- 如何将变量从一个 qt 表单传递到另一个表单 qt 形式
- 打开另一个表单,然后等待该表单返回响应