我的QT项目中有两个Windows。 MainWindow
和Load
。当MainWindow
关闭时,我想更新Load
中的某些字段。我已经尝试了几件事。我还有一个名为update_channel()
的函数,可以完成所有必要的操作。现在,我使用PushButton
手动执行更改。这工作正常,但我需要在加载窗口关闭时自动调用此函数。例如,我试过:
connect(load, SIGNAL(load->close()), this, SLOT(update_channel()));
和
connect(load, &Load::update_mainwindow(), ui->pb_update, &QPushButton::click);
(with a public signal in "load.h" and emit update_mainwindow in "load.cpp")
我没有想法,而且我不知道谷歌的用途,我找到的所有提示都没有。
我使用的是Qt Creator 3.6.0(适用于Qt 5.5.1)
答案 0 :(得分:0)
对QDialog
类进行子类化,并向其添加一个信号,例如调用它close
。然后覆盖closeEvent
成员函数并从那里发出close
信号。另外,请确保您的update_channel()
功能是一个插槽。然后将close
信号连接到update_channel
插槽,您就完成了。
另一种方法是使用QDialog
现有信号之一:accepted
或rejected
。它们并不完全等同于上述解决方案,但也应该是可以接受的,因为通常会接受或拒绝对话。
答案 1 :(得分:0)
我自己解决了。问题不在于connect语句的定义。问题是我的代码中我放置这段代码的行。
我把“connect”放在我的代码的开头,没有“加载”窗口。所以我改成了:
load = new Load(this);
connect(load, SIGNAL(update_mainwindow()), this, SLOT(update_channel()));
load->show();
现在它按预期工作了!