2011-11-06 18 views
96

nasıl bırakmalısınız bir Qt Programı, örneğin bir veri dosyası, ve keşfedilen dosya bozulması ve kullanıcıyı bu uygulamayı çıkın veya veri dosyasını yeniden başlatmak için gereken yüklerken?Qt programından çıkmanın doğru yolu?

mıyım:

  1. çağrı exit(EXIT_FAILURE)
  2. çağrı QApplication::quit()
  3. çağrı QCoreApplication::quit()

Ve arasındaki fark (2) ve (3)?

cevap

107

QApplication QCoreApplication türetilen ve böylece QCoreApplication bir halka yuvası quit() devralır, bu QApplication::quit() ve QCoreApplication::quit() arasında bir fark yoktur.

quit() belgesindeki "belgesinde okuyabileceğimiz gibi", uygulamanın geri dönüş kodu 0 (başarı) ile çıkmasını söyler. ". Çıkmak istiyorsanız dosya yolsuzluklar çünkü o zaman başarı gelir dönüş kodu sıfır ile çıkmak istemeyebilir, bu nedenle geleneksel olarak bir hata olduğunu belirtir, sıfır olmayan bir dönüş kodu sağlayabilir çünkü QCoreApplication::exit() aramalıyız.

Size exit(EXIT_FAILURE) çağırmalıdır bu durumda böylece , "Olay döngü çalışır durumda değilse, bu işlev (QCoreApplication :: çıkış()) hiçbir şey yapmaz" olduğuna dikkat etmek önemlidir.

27

Sen qApp.exit(); çağırabilir. Bunu her zaman kullanırım ve onunla hiçbir zaman bir problemim olmadı. size uygulama bir komut satırı uygulaması ise

, gerçekten bir çıkış kodu geri dönmek isteyebilirsin. Kodun tamamen size kalmış.

+0

Qt5'te çalışmaz – YumYumYum

+1

Qt5 bu işe yaradı QApplication :: quit() – YumYumYum

+0

Aşağıdakileri yapmak için gerekliydi: 'qApp-> exit();' –

1

siz) (ana adresinin uygulamayı kapatmak gerekiyorsa bu kodu

int main(int argc, char *argv[]){ 
QApplication app(argc, argv); 
... 
if(!QSslSocket::supportsSsl()) return app.exit(0); 
... 
return app.exec(); 
} 

Eğer bu should Qt Jambi kullanıyorsanız OpenSSL

+0

Bunun bir derleme olmadığını düşünüyorum. app.exit (0) bir int döndürmez. (! QSslSocket :: supportsSsl()) kullanın 'eğer {0 return;};'. app.exec() bu çizgide çağrılmadıysa Çünkü app.exit (0) hiçbir şey, QCoreApplication belgeleri :: exit() görüyor mu: _If olay döngü çalışmadığı, –

-2

yüklü değilse programı sonlandırıldı olacak kullanabilirsiniz iş:

QApplication.closeAllWindows(); 
0
//How to Run App 

bool ok = QProcess::startDetached("C:\\TTEC\\CozxyLogger\\CozxyLogger.exe"); 
qDebug() << "Run = " << ok; 


//How to Kill App 

system("taskkill /im CozxyLogger.exe /f"); 
qDebug() << "Close"; 

example

+0

olacak nothing._ bu işlev yapar Kod biçimlendirmesini düzeltirseniz daha kolay okunur. – Shashanth