• 11630阅读
  • 5回复

[提问]setQuitOnLastWindowClosed这个函数的功能是什么? [复制链接]

上一主题 下一主题
离线a188037049
 
只看楼主 倒序阅读 楼主  发表于: 2012-12-10
关键词: QMessageBox
今天使用QMessageBox弹出窗口时,无论点击确认还是取消,整个qt程序都会关闭了,
上网查了一下,网上说加上app.setQuitOnLastWindowClosed(false)之后就可以了,
我试过确实是可以,网上说这个函数是“控制着当最后一个可视的窗口退出时候,程序是否退出”,
还有“系统托盘状态下点击确定,会将应用程序一并退出
我不明白,我明明不是只剩下“最后一个可视的窗口”,而且也没有设置过系统托盘,怎么也会这样子呢?好纠结呢!
离线XChinux

只看该作者 1楼 发表于: 2012-12-10
上代码啊。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线jdwx

只看该作者 2楼 发表于: 2012-12-10
太奇怪了,这个现象不是正常的。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线a188037049
只看该作者 3楼 发表于: 2012-12-11
这是一个学校的项目,我负责其中一部分。有点复杂,我慢慢讲。
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),删除功能正常而且程序也不会退出了,问题是解决了,但是我不明白为什么会这样?
离线uidab

只看该作者 4楼 发表于: 2012-12-11
能把你switch中的涉及到delet_msg这个变量的代码贴一下不,感觉是这里的问题。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线a188037049
只看该作者 5楼 发表于: 2012-12-11
引用第4楼uidab于2012-12-11 16:51发表的  :
能把你switch中的涉及到delet_msg这个变量的代码贴一下不,感觉是这里的问题。


在switch里面没有再用到delete_msg这个变量了
快速回复
限100 字节
 
上一个 下一个