• 25093阅读
  • 6回复

qt程序如何退出? [复制链接]

上一主题 下一主题
离线qfmeal
 

只看楼主 倒序阅读 楼主  发表于: 2015-03-03
我在main函数中显示调用exit或者quit,程序均不能退出,为什么?
代码如下:
  1. int main(int argc, char *argv[])
  2. {
  3.     QApplication a(argc, argv);
  4.     a.exit();
  5.     MainWindow mw;
  6.     mw.showMaximized();
  7.     a.exec();
如果没有后面的MainWindow,那么程序后闪一下就退出,但是任务管理器里面还能看到这个进程
如果有后面的MainWindow对象,这个窗口会继续生成并显示。
请问要如何关闭窗口?谢谢。




离线xuang

只看该作者 1楼 发表于: 2015-03-03
a.exit();换成return 0;
离线dbzhang800

只看该作者 2楼 发表于: 2015-03-03
多看看Manual,(答案都太明确了):

void QCoreApplication::exit(int returnCode = 0)


After this function has been called, the application leaves the main event loop and returns from the call to exec(). The exec() function returns returnCode. If the event loop is not running, this function does nothing.
离线qfmeal

只看该作者 3楼 发表于: 2015-03-03
非常感谢 xuang

试了一下,确实可以。
离线qfmeal

只看该作者 4楼 发表于: 2015-03-03
多谢  dbzhang800
离线qfmeal

只看该作者 5楼 发表于: 2015-03-03
回 dbzhang800 的帖子
dbzhang800:
多看看Manual,(答案都太明确了):
void QCoreApplication::exit(int returnCode = 0)
.......

英语不好,我理解上面那句话的意思应该是,在没有进入事件循环时,这个exit函数没有作用
我的使用场景是这样的:程序运行后,先弹出登录框,登陆成功后才进入主窗体。
  1. int main(int argc, char *argv[])
  2. {
  3.     QApplication a(argc, argv);
  4.     DlgLogin login;
  5.     if( login.exec() == QDialog::Rejected )
  6.     {
  7.         qDebug()<<"exit";
  8.         a.exit();
  9.     }
  10.     // .....
  11. MainWindow mw;
  12. mw.show();
  13.    a.exec();
  14. }
如上所示,我在第7行后面加上a.exit()是没有作用的。

因为的登录窗口保留了关闭和最小化按钮,当关闭时,我想让整个程序退出来。






离线咬蚊嚼渍

只看该作者 6楼 发表于: 2015-03-03
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    DlgLogin login;
    if( login.exec() == QDialog::Rejected )
    {
        qDebug()<<"exit";
        a.exit();
        return 0;
    }
    else
    {
        // .....
        MainWindow mw;
        mw.show();
        return a.exec();
    }
}
要不试试这样?
快速回复
限100 字节
 
上一个 下一个