解決嵌入式QT程式關閉視窗後進程不結束問題

來源:互聯網
上載者:User

在海思3536晶片上用QT4.8.6開發介面。GUI程式是一個表單,在終端裡用命令列啟動,指令形如xxxx -qws,然後點擊小叉關閉表單,表單消失,但終端裡的命令列指令並不返回,用ps查看發現進程沒有退出。而相同的代碼使用pc上的qt庫編譯,在pc上是可以正常關閉的,因此推測這個問題與qws相關。通過對main函數的調試發現,進程不結束是卡在了QApplication的解構函式裡。這個程式的工程是用Qt Creator建立的,預設的main函數如下:

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

    MainWindow w;
    w.show();

    return a.exec();
}

這裡面QApplication的執行個體是聲明為局部變數的,要在main函數釋放堆棧時析構,懷疑卡死的原因在於一些qws相關資源的釋放順序有問題。因此我改用動態分配的方式產生QApplication執行個體,修改代碼如下:

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

    if(!p)

    {

        return -1;

    }

    MainWindow w;
    w.show();

    int ret;

    ret = p->exec();

    delete p;

    return ret;
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.