Qt প্রোগ্রামটি ছেড়ে দেওয়ার সঠিক উপায়?


129

আমি কীভাবে একটি Qt প্রোগ্রাম ছেড়ে যাব, উদাহরণস্বরূপ কোনও ডেটা ফাইল লোড করার সময় এবং ফাইল দুর্নীতি আবিষ্কার করার সময় এবং ব্যবহারকারীকে এই অ্যাপ্লিকেশনটি ছাড়তে হবে বা ডেটা ফাইলটি নতুন করে শুরু করতে হবে?

আমি কি:

  1. কল exit(EXIT_FAILURE)
  2. কল QApplication::quit()
  3. কল QCoreApplication::quit()

এবং (2) এবং (3) এর মধ্যে পার্থক্য?

উত্তর:


145

কিউ অ্যাপ্লিকেশন QCore অ্যাপ্লিকেশন থেকে উদ্ভূত এবং এর মাধ্যমে উত্তরাধিকার সূত্রে প্রাপ্ত quit()যা একটি পাবলিক স্লট QCoreApplication, সুতরাং QApplication::quit()এবং এর মধ্যে কোনও পার্থক্য নেইQCoreApplication::quit()

যেহেতু আমরা এর ডকুমেন্টেশনে পড়তে QCoreApplication::quit()পারি "অ্যাপ্লিকেশনটিকে রিটার্ন কোড 0 (সাফল্য) দিয়ে প্রস্থান করতে বলে।" । আপনি যদি ফাইলটি দুর্নীতি আবিষ্কার করেছেন বলে আপনি যদি প্রস্থান করতে চান তবে আপনি হয়ত রিটার্ন কোড শূন্যের সাথে প্রস্থান করতে পারবেন না যার অর্থ সাফল্য, সুতরাং আপনার কল করা উচিত QCoreApplication::exit()কারণ আপনি একটি শূন্য নয় এমন রিটার্ন কোড সরবরাহ করতে পারেন যা কনভেনশন অনুসারে কোনও ত্রুটি নির্দেশ করে।

এটি লক্ষ করা গুরুত্বপূর্ণ যে "যদি ইভেন্টের লুপটি চলমান না থাকে তবে এই ফাংশনটি (কিউকোর অ্যাপ্লিকেশন :: প্রস্থান ()) কিছুই করে না" , সেক্ষেত্রে আপনার কল করা উচিত exit(EXIT_FAILURE)


30

আপনি কল করতে পারেন qApp.exit(); । আমি সর্বদা এটি ব্যবহার করি এবং এটির সাথে কখনও সমস্যা হয়নি।

যদি আপনি আবেদনটি একটি কমান্ড লাইন অ্যাপ্লিকেশন হয় তবে আপনি সম্ভবত একটি প্রস্থান কোড ফিরে আসতে চাইতে পারেন। কোডটি কী তা এটি সম্পূর্ণরূপে আপনার।


3
আমাকে নিম্নলিখিতগুলি করার দরকার ছিল:qApp->exit();
ফ্রেডেরিক ওলিঞ্জার


-2

যদি আপনাকে প্রধান () থেকে আপনার অ্যাপ্লিকেশনটি বন্ধ করতে হয় তবে আপনি এই কোডটি ব্যবহার করতে পারেন

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

ওপেনএসএসএল ইনস্টল না করা থাকলে প্রোগ্রামটি সমাপ্ত হবে


1
আমি মনে করি এটি সংকলন করে না। app.exit (0) কোন int ফেরত দেয় না। ব্যবহার if(!QSslSocket::supportsSsl()) {return 0;};। অ্যাপ.এক্সেক () এই লাইনে কল করা হয়নি বলে, অ্যাপ.এক্সিট (0) কিছুই করে না, কিউকোর অ্যাপ্লিকেশন এর ডকুমেন্টেশন দেখুন :: প্রস্থান (): ইভেন্ট লুপটি চলমান না থাকলে এই ফাংশনটি কিছুই করে না।
সাচ্চা গায়ার

-3
//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";

উদাহরণ


প্রশ্নটি নতুন প্রক্রিয়াগুলি আলাদা করার বিষয়ে নয়
রোকি কোডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.