如何在关闭对话框后触发方法
How to trigger a method after closing a dialog box
我做了一个简单的工具应用程序。有一个设置按钮可以打开设置对话框窗口。有一个保存按钮可以保存设置并关闭窗口。我想要的是如何使主窗口在对话框关闭时执行特定功能。
我在设置对话框中触发了 closeEvent,但不确定如何从 closeevent 在主窗口上调用方法。
编辑:我设法覆盖closeEvent,但我不确定的是如何在SettingDialog的主窗口中触发方法。我试过这个:
void SettingsDialog::closeEvent(QCloseEvent *event) {
qDebug() << "CloseEvent Called";
QTimer::singleShot(250, this, &MainWindow::SettingsSaved);
}
它给出错误:
错误:调用 'QTimer::singleShot(int, SettingsDialog*, void (MainWindow::*((((' QTimer::singleShot(250, this, &MainWindow::SettingsSaved(; ^
解决更新的问题:
创建对话框时,将主窗口指针作为父指针传递:
new SettingsDialog(this);
假设您是从主窗口中创建的。现在,您在对话框中有一个指向主窗口的指针,尽管它将显示为QWidget *
。
将父级强制转换为适当的类型:
MainWindow * mainptr = qobject_cast<MainWindow *>(parent());
而且您甚至不需要将计时器用于您要实现的那种事情,您可以简单地:
if (mainptr) mainptr->SettingsSaved();
所以,最后,像这样:
void SettingsDialog::closeEvent(QCloseEvent *event) {
if (settingsAreAllOK) {
MainWindow * mainptr = qobject_cast<MainWindow *>(parent());
if (mainptr) mainptr->SettingsSaved();
event->accept();
} else event->ignore();
}
相关文章:
- 如何在Qbutton的帮助下更改Q对话框的宽度
- 当对话框被接受时,如何用参数调用槽
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 如何多次询问来自QML对话框的输入?
- 选择文件对话框错误
- 自定义对话框(源自QDialog)不会关闭(Android)
- 如何在 MFC 对话框中使用 OnDraw
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- 从资源视图访问对话框时出现问题
- 如何检测窗口当前是否正在运行模式对话框?
- "最小化"按钮不会出现在 MFC 对话框中
- 如何获取QNetworkConfiguration UserChoice对话框?
- 表单显示对话框函数错误,并且不执行下面的语句
- 如何在 VC6 中的对话框中将图标设置为按钮
- C++/Win32 构造函数不使用从对话框获取的字符串初始化变量
- 如何在关闭对话框后触发方法
- 创建关闭GTK+对话框的取消按钮的正确方法是什么
- 有没有一种方法可以不破坏wxwidget对话框的子项
- 将对话框过程绑定为自定义类的方法
- 在对话框中以编程方式更改选项卡顺序的其他方法