Qt-关闭带有信号/插槽的子菜单
我有一个Qt主窗口,在这里我调用另一个窗口,实际上是一种包含第一个窗口参数的子菜单;以下是此主窗口的一部分:Qt-关闭带有信号/插槽的子菜单,qt,signals-slots,qmainwindow,Qt,Signals Slots,Qmainwindow,我有一个Qt主窗口,在这里我调用另一个窗口,实际上是一种包含第一个窗口参数的子菜单;以下是此主窗口的一部分: void Ui_MainWindow::createSignals() { connect(actionDisk_galaxy, SIGNAL(triggered()), this, SLOT(ICMenu())); } void Ui_MainWindow::ICMenu() { qmenu = new QMainWindow; DiskMenu = new Ui_DiskG
void Ui_MainWindow::createSignals()
{
connect(actionDisk_galaxy, SIGNAL(triggered()), this, SLOT(ICMenu()));
}
void Ui_MainWindow::ICMenu()
{
qmenu = new QMainWindow;
DiskMenu = new Ui_DiskGalMenu;
DiskMenu->setupUi(qmenu,this);
setInitialDiskMenuPosition(qmenu, this);
qmenu->show();
}
如您所见,我调用另一个QMainwindow(“qmenu
”);以下是此新窗口的代码(其类型为“Ui\u DiskGalMenu
”):
在此子菜单中设置参数后,我想用按钮(此处为“按钮_4
”)将其关闭
我的问题是,当我点击“按钮4”时,这个窗口没有关闭
我也尝试过重新实现closeEvent
,但没有成功
任何帮助都很好此函数调用看起来像一个错误:
close(true);
QWidget::close()不接受任何参数。因此,您在这里要做的是调用C库的close(int)函数(用于关闭文件描述符)。bool
被隐式转换为int
,因此您最终得到以下调用:
::close(1);
它(可能)正在关闭stderr
如果将上述内容更改为:
this->close(true);
由于不存在这样的函数,因此应该会出现编译错误。所以正确的答案应该是:
this->close();
但是,QWidget::close()已经是一个插槽,因此您根本不需要Ui\U DiskGalMenu::closeMenu()函数。您只需连接到close()插槽即可开始:
connect(actionDisk_galaxy, SIGNAL(triggered()), this, SLOT(close()));
如果在窗口关闭时需要执行更多操作,可以重写closeEvent(),该函数将在窗口关闭前调用
connect(actionDisk_galaxy, SIGNAL(triggered()), this, SLOT(close()));