关闭

嵌入式 Qt主函数的书写规范问题

489人阅读 评论(0) 收藏 举报
分类:

#include
#include “widget.h”
#include “mydlg.h”
int main(int argc, char *argv[])
{
      QApplication a(argc, argv);
              myDlg my1;
      if(my1.exec()==QDialog::Accepted)
      {
Widget w;
              w.show();
          }
    return a.exec();

 

这样,因为 w是在 if语句里定义的,所以当 if语句执行完后它就无效了。这样导致的后果就
是,按下 enterBtn 后,主界面窗口一闪就没了。如果此时对程序改动了,再次点击运行时,
就会出现 error: collect2: ld returned 1 exit status的错误。这是因为虽然主窗口没有
显示,但它只是隐藏了,程序并没有结束,而是在后台运行。所以这时改动程序,再运行时便
会出错。你可以按下调试栏上面的红色 Stop停止按钮来停止程序运行。你也可以在 windows

 

任务管理器的进程中将该进程结束,而后再次运行就没问题了,当然先关闭 Qt Creator,而
后再重新打开,这样也能解决问题。

 

正确写法是:

#include

#include "widget.h"
#include "mydlg.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    myDlg my1;
    if(my1.exec() == QDialog::Accepted)
    {
        w.show();
        return a.exec();
    }

    else return 0;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1045264次
    • 积分:18259
    • 等级:
    • 排名:第522名
    • 原创:741篇
    • 转载:523篇
    • 译文:0篇
    • 评论:105条
    最新评论