سوال در رابطه با پیاده سازی تابع exec() در Qt
سلام به همه دوستان ببخشید من یک سوال داشتم
می خواستم بدونم پیاده سازی تابع exec() در Qt به چه صورت است که هنگامی که برنامه به دستور
return a.exec() می رسد برنامه به اتمام نمی رسد بسته نمی شود.
یعنی در این تابع از تایمر استفاده کرده یا اینکه از روش ترد استفاده کرده و یک تابع برگشتی رو کال می کنه . چون تا زمانی که برنامه بسته نشود این تابع خارج نمی شود.
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
mainWindow w;
w.show();
return a.exec();
}
نقل قول: سوال در رابطه با پیاده سازی تابع exec() در Qt
نقل قول:
نوشته شده توسط
menosoft
سلام به همه دوستان ببخشید من یک سوال داشتم
می خواستم بدونم پیاده سازی تابع exec() در Qt به چه صورت است که هنگامی که برنامه به دستور
return a.exec() می رسد برنامه به اتمام نمی رسد بسته نمی شود.
یعنی در این تابع از تایمر استفاده کرده یا اینکه از روش ترد استفاده کرده و یک تابع برگشتی رو کال می کنه . چون تا زمانی که برنامه بسته نشود این تابع خارج نمی شود.
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
mainWindow w;
w.show();
return a.exec();
}
کلاس QApplication در زمان ایجاد Main Thread GUI را اجرا میکنه به همین علت کنترل برنامه به این نخ واگذار میشود و در صورتی که خروج موفقیت آمیز از این نخ نباشه عددی غیر از صفر توسط متد exec بازگشت داده می شود.
نقل قول: سوال در رابطه با پیاده سازی تابع exec() در Qt
سلام و ممنونم از پاسختون
حالا می خوام بدونم چطوری میشه همچین کلاسی رو تو C++استاندارد پیاده سازی کرد.
1 ضمیمه
نقل قول: سوال در رابطه با پیاده سازی تابع exec() در Qt
سلام دوست عزیز
میشه هدفتون رو از پیاده سازی تابع exec بگید شاید بتونم بهتر کمکتون کنم؟
تابع exec یکی از توابع QThread محسوب میشه و اگر هدفتون Subclass کردن و تغییر دادن عملکرد این تابع هست که بایستی یک کلاس که از QThread ارث بری میکند بسازید و سپس تابع exec آنرا پیاده سازی کنید.
نحوه پیاده سازی تابع exec در مستندات Qt قسمت QThread هستش. در واقع این تابع وظیفه اصلیش صدا زدن تابع run هست که توسط کاربر در thread پیاده سازی شده و وظیفه های خاص خود را انجام میدهد.
http://doc.qt.io/qt-5/qthread.html
http://doc.qt.io/qt-5/qthread.html#exec
مستندات بالا رو بخونید اگه مشکلی داشتید بگید.
نقل قول: سوال در رابطه با پیاده سازی تابع exec() در Qt
نقل قول:
نوشته شده توسط
menosoft
سلام و ممنونم از پاسختون
حالا می خوام بدونم چطوری میشه همچین کلاسی رو تو C++استاندارد پیاده سازی کرد.
از QEventLoop استفاده کن