|
با سلام خدمت همه دوستان عزیز.
من تازه تو این انجمن ثبت نام کردم ولی قبلا چند بار به خاطر اخبار KDE اینجا اومده بودم. سایت واقعا زیباست. امیدوارم که همیشه موفق باشید. سوالم در مورد تعریف یک متغیر سراسری QTime هست که زمان حال رو در اون ذخیره کنیم و در جاهای مختلف برنامه مثلا زمان 5 دقیقه بعد رو ازش کم کنیم که زمان طی شده رو بدست بیاریم. ممنون
یاشاسین آذربایجان
|
|
RTFM
برای این که عمومی باشه در قسمت private از کلاس مربوطه یه متغیر با هر نام که دوست داری از کلاس QTime تعریف کن. مثل:
فراموش نشه:
در سازنده کلاس اون رو به صورت زیر مقدار دهی میکنیم(فرض کردیم که اسم کلاس شما widget است):
در هر جای برنامه خواستید زمان سپری شده رو بدست بیارید:
الآن متغیر passed زمان سپری شده را به میلی ثانیه در خودش داره. با تابع زیر هم میتونید ریستش کنیپ(انگار که بخواهید زمان سپری شده رو از همین لحضه محاسبه کنه):
I'm Just A Newbie
|
|
سلام.
مرسی از جوابتون. من فکر می کردم مشکل من تو تعریف متغیر سراسری هست ولی من هم مثل شما به صورت private تعریف کردم ولی قبل از متغیر یک * گذاشته بودم که اشتباه بوده. حالا هم یک متغیر سراسری QTimer تعریف کردم که به صورت زیر هستش:
و تعریف متغیر:
و کد اصلی:
و تابع showTime:
در موقع اجرا خطای زیر رو میده:
در ضمن این خطا رو هم بعضی مواقع میده:
یاشاسین آذربایجان
|
|
با سلام دوباره خدمت دوستان عزیز. من راه حل سوال قبلی رو بعد از جستجو و آزمون و خطا پیدا کردم ولی توضیحش رو نمی دونم. اگه کسی می تونه کمک کنه ازش ممنون می شم.
قسمت تعریف متغیر رو به این صورت تغییر دادم:
حالا تو هر قسمت برنامه اگه بخوام از timer استفاده کنم باید به جای
از
استفاده کنم. اگه ممکنه این تغییرات رو برام توضیح بدید. ممنون در ضمن طریقه تعریف یک تابع که بتونیم براش متغیر ارسال کنیم چه جوریه؟
Last edited by Anonymous on Sun Jan 17, 2010 7:02 am, edited 1 time in total.
یاشاسین آذربایجان
|
|
این نشون میده برنامه با موفقیت به اتمام نرسیده. کد ۰ (صفر) نشون دهنده پایان موفقیت آمیزه. با تعریف متغیر به صورت:
کد زیر به درستی عمل میکنه:
و به عنوان مثال هرجای دیگر برنامه میشه به صورت زیر به متغیر دسترسی داشت:
[quote="موغانلی"] اگه ممکنه این تغییرات رو برام توضیح بدید. [/quote] در مستندات مربوط به QObject پارامتر اول تابع connect به شکل const QObject * sender تعریف شده(بنابراین آرگومان اول باید یک اشارهگر به یک شیئ باشد). وقتی متغیر رو به صورت QTimer timer تعریف میکنیم یک شیئ ار کلاس QTimer ایجاد میکنیم اما وقتی به صورت QTimer *timer مینویسیم، یک اشارهگر به شیئای از کلاس QTimer ایجاد میکنیم. [quote="موغانلی"] در ضمن طریقه تعریف یک تابع که بتونیم براش متغیر ارسال کنیم چه جوریه؟ [/quote] سوالتون واضح نبود! مثال زیر شاید جوابتون باشه: مثلا در قسمت private (بسته به نیاز ممکن مکانش تغییر کنه):
در قسمت پیادهسازی (implementation) با فرض اینکه نام کلاس MainWindow است:
لینکهای مرتبط: New Dynamic New
Last edited by soulless on Sun Jan 17, 2010 6:11 pm, edited 1 time in total.
I'm Just A Newbie
|
Registered Member
|
شاید بی ربط، اما برای داشتن زمان کنونی نیازی به داشتن متغیر نیست! Qt خودش براتون نگهمیداره، کافیه توابع استاتیک زیر رو اجرا کنید:
QTime::currentTime() QTime::currentDate() QTime::currentDateTime()
Choqok developer
|
|
ممنون از جوابتون soulless عزیز. فقط چند نکته(البته اشتباه از من هست چون منظورم رو به درستی بیان نکردم):
1- در مورد خطا منظورم اینه که خطا در مورد چی هستش 2- در مورد تعریف متغیر timer* سوالم در مورد استفاده ازش بود که با ( . ) باید باشه یا با ( <- ) که فکر کنم در اشاره گرها باید به صورت ( <- ) باشه 3- بعد از تعریف تابع ارسال متغیر به تابع به این صورت هست؟
یا
از شما هم ممنون mtux عزیز. پس در اون صورت کد روبرو درست هست؟
یاشاسین آذربایجان
|
|
[quote="موغانلی"]
در مورد خطا منظورم اینه که خطا در مورد چی هستش [/quote] احتمالا منظور شما اینه که معنی این شماره خطا چیه؟ حقیقتش جواب این سوال رو نمیدونم. در لینوکس (این که در ویندوز هم میشه رو نمیدونم) با فرمان:
فقط کافیه شماره خروج برنامتون رو جایگزین # کنید تا ببینید معنی اون چیه. (دقت کنید که این روش به زبان برنامه نویسی شما وابستهاست و برای هر زبانی نمیشه به کار بردش) اما اگه شما هم کد 1073741819 رو با روش بالا تست کنید جوابی نمیگیرید. احتمالا (و دقت کنید که این قسمت چیزی جز احتمال نیست!) این خطا به moc یا همون Meta Object Compiler مربوط میشه. [quote="موغانلی"] بعد از تعریف تابع ارسال متغیر به تابع به این صورت هست؟
یا
[/quote]
I'm Just A Newbie
|
|
Registered users: bartoloni, Bing [Bot], Google [Bot], Sogou [Bot]