QT main函数中加if判断不弹出窗口问题

2022-10-19 13:50:00  阅读 1566 次 评论 0 条

预期是想通过参数判断实现启动不同窗口,将窗口移到 if分支内,发现窗口弹不出来,拿出if外即好

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    if(argc > 5)
    {
        MainWindow w;
        w.show();
    }
    else
    {
        OtherDlg dlg;
        dlg.show();
    }
    return a.exec();
}

脑抽了,这是一个低级错误,在if 中的变量会在此代码块结束时被释放,哪来的窗口……

解决方式,用指针

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow *w = nullptr;
    if(argc > 5)
    {
        w = new MainWindow();
        w->show();
    }

    int r = a.exec();
    if (w != nullptr)
    {
        delete w;   //文明编程,释放内存
    }
    return r;
}



本文地址:http://bloguan.com/?id=593
版权声明:本文为原创文章,版权归 博观网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?