ورود

View Full Version : QApplication a(argc , argv); در کیوت چیست؟



hosseinam1370
دوشنبه 14 اردیبهشت 1394, 07:53 صبح
دوستان این دوتا کد چرا باید به کدهای ما اضافه بشوند؟
QApplication a(argc , argv);

a.exec();



و این آرگومانهای کد اول برای چی هستند ؟

chikar
دوشنبه 14 اردیبهشت 1394, 11:26 صبح
سلام
ببینید پارامتر وردی تابع main در کل برای این هست که بتونیم یا برنامه مون رو تو حالت خاصی باز کنیم و یا فایل های مرتبط با برنامه مون رو باز کنیم..
اصلا شما چی رو به qapplication می فرستید؟ یعنی چاپش کنید ..




qDebug() << " argc: " << argc << " argv: " << *argv;

output is
argc: 1 argv: C:\Qt\Qt5.3.2\Tools\QtCreator\bin\build-Test1-Desktop_Qt_5_3_MSVC2010_OpenGL_32bit-Release\release\Test1.exe


ببینید، پارامتر اول تابع که argc هست تعداد مقادیری است که به پارامتر اول تابع main فرستاده می شه، و پارامتر دوم یعنی argv آدرس اون مقادیر هست، مثلا در بالا مقدار argc برابر 1 هست که منظور همین برنامه در حال اجراست و پارامتر دوم یعنی argv هم آدرس برنامه خودمون هست، مثلا یه فایل docx که متعلق به word هست برای اینکه در برنامه word باز بشه، آدرس این فایل به عنوان پارامتر ورودی تابع main برنامه word میره و از این طریق باز می شه!

hosseinam1370
دوشنبه 14 اردیبهشت 1394, 14:10 عصر
یعنی QApplication اون دوتا آرگومان رو میفرسته به آرگومانهای main?


با تشکر.

chikar
دوشنبه 14 اردیبهشت 1394, 15:25 عصر
یعنی QApplication اون دوتا آرگومان رو میفرسته به آرگومانهای main?
با تشکر.
نه، برعکس گفتید، ببینید اولین بخشی از برنامه شما که در حافظه قرار می گیره و برنامه تون رو شروع می کنه، تابع main هست و پارامتر های ورودی تابع main، به QApplication داده می شه، تا از این طریق برنامه تون اجرا بشه، ببینید argv*، دقیقا مسیر فایل exe. شماست.
اینکه مثلا با دابل کلیک یک برنامه چه اتفاقی می افته و چطوری از main آغاز می شه، مثلا در لینوکس می تونید این مطلب را مطالعه کنید
http://dbp-consulting.com/tutorials/...amStartup.html (http://dbp-consulting.com/tutorials/debugging/linuxProgramStartup.html)