从另一个对话框更新对话框时出现问题

Problems updating a dialog from another one

本文关键字:对话框 问题 更新 另一个      更新时间:2023-10-16

我有2个非模态对话框,都是从主窗口运行的。基本上,我试图通过按按钮从第一个到第二个没有成功的字符串。所以这两个对话框都在mainwindow.h中声明如下:

Dialog1 *dg1;
Dialog2 *dg2;

并在mainwindow.cpp:

中创建
dg1 = new Dialog1(this);
dg2 = new Dialog2(this);

我需要通过调用更新dg2的textEdit的函数将字符串从dg1传递到dg2。我试着:

#include "Dialog2.h"
...
Dialog2 dg2;
dg2.callfunction(string);

但是没有字符串到达那里的迹象。我该怎么做?

有三种方法可以解决这个问题:

  1. 信号和槽位:为dialog1创建信号,为dialog2创建槽位。两者都必须有一个QString作为参数。在构建对话框的主窗口中连接它们。

  2. setter关系:给dialog1一个接受指向dialog2的指针的setter。记住成员变量中的dialog2指针。使用该指针调用dialog1中dialog2的callfunction。调用构造对话框的指针设置器。如果dialog2不再可用,不要忘记清除指针,并在访问它之前检查指针的有效性。

  3. 引用关系:向dialog1的构造函数添加一个dialog2引用作为参数。记住成员变量中的引用。使用该引用在dialog1中调用dialog2的callfunction。为此,您需要在dialog1之前构造dialog2。

你应该能够带着这些信息继续前进。

我选1。

我建议多读一些必要的基础知识。阅读Qt的信号和插槽。阅读c++指针、引用和构造函数