PDA

View Full Version : سوال: سوال در رابطه با پیاده سازی تابع exec() در Qt



menosoft
چهارشنبه 07 آذر 1397, 22:50 عصر
سلام به همه دوستان ببخشید من یک سوال داشتم
می خواستم بدونم پیاده سازی تابع exec() در Qt به چه صورت است که هنگامی که برنامه به دستور
return a.exec() می رسد برنامه به اتمام نمی رسد بسته نمی شود.
یعنی در این تابع از تایمر استفاده کرده یا اینکه از روش ترد استفاده کرده و یک تابع برگشتی رو کال می کنه . چون تا زمانی که برنامه بسته نشود این تابع خارج نمی شود.



int main(int argc, char *argv[])
{
QApplication a(argc, argv);
mainWindow w;
w.show();

return a.exec();
}

farhad_shiri_ex
پنج شنبه 08 آذر 1397, 11:35 صبح
سلام به همه دوستان ببخشید من یک سوال داشتم
می خواستم بدونم پیاده سازی تابع 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 بازگشت داده می شود.

menosoft
پنج شنبه 08 آذر 1397, 15:29 عصر
سلام و ممنونم از پاسختون
حالا می خوام بدونم چطوری میشه همچین کلاسی رو تو c++استاندارد پیاده سازی کرد.

gghazbil
سه شنبه 25 دی 1397, 20:08 عصر
سلام دوست عزیز
میشه هدفتون رو از ‍پیاده سازی تابع 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
مستندات بالا رو بخونید اگه مشکلی داشتید بگید.

حامد مصافی
چهارشنبه 03 بهمن 1397, 22:56 عصر
سلام و ممنونم از پاسختون
حالا می خوام بدونم چطوری میشه همچین کلاسی رو تو C++‎استاندارد پیاده سازی کرد.
از QEventLoop استفاده کن