这是一个学校的项目,我负责其中一部分。有点复杂,我慢慢讲。
main函数将main_ui类的对象show出来,然后在main_ui上可以通过pushbutton控件的click()信号将我做的参数设置界面para_ui show出来,
然后在这个para_ui上面又有一个pushbutton控件,用来显示出我做的文件管理器界面filemanage,在para_ui类中,我用.exec()来显示filemanage,而且没有隐藏父窗体para_ui。
void para_ui::on_pushButton_7_clicked()
{
FileManage->exec();
}
在filemanage界面上有“删除文件及文件夹“的功能按键,我在这个按键的click()的槽函数中调用文件删除函数removeDir(dir.path())
void filemanage::on_pushButton_7_clicked() //删除文件按钮
{
QDir dir=model->filePath(ui->listView->currentIndex());
qDebug()<<removeDir(dir.path()); //调用文件删除函数
}
在removeDir(dir.path())函数中,又创建了QMessageBox 来提示是否确认删除文件,
bool filemanage::removeDirWithContent(const QString &dirp) //删除文件
{
QMessageBox delet_msg;
delet_msg.setWindowTitle("删除文件及文件夹");
delet_msg.setText("提示");
delet_msg.setInformativeText("确定删除该文件/文件夹?");
delet_msg.setStandardButtons(QMessageBox::Ok|QMessageBox::Cancel);
delet_msg.setDefaultButton(QMessageBox::Cancel);
delet_msg.setButtonText(QMessageBox::Ok,"确定");
delet_msg.setButtonText(QMessageBox::Cancel,"取消");
int ret = delet_msg.exec();
switch (ret)
{
case QMessageBox::Ok:
........ //具体的删除操作
break;
case QMessageBox::Cancel:
break;
default:
break;
}
}
然后只要我进入了filemanage界面,按了删除按键,弹出QMessageBox后,无论按确定还是取消,整个qt程序都会退出。
虽然程序退出了,但是删除操作是可以正常完成的,如果在main函数中加上了setQuitOnLastWindowClosed(false),删除功能正常而且程序也不会退出了,问题是解决了,但是我不明白为什么会这样?