معرفی فریمورک اپلیکیشن نویسی Qt ‏(8)

ما تابع qDebug رو در کیوت برای فرستادن پیامهای خروجی که معمولا موقع برنامه نویسی و تست برنامه لازم داریم استفاده میکنیم. این پیامها ممکنه بعد از تکمیل و تست برنامه از برنامه برداشته بشن، و البته شاید گاهی هم نه و این پیامها جزیی از پیامهای خطای دایمی برنامه باشن.
بهرحال ما این تابع رو تقریبا بصورت تابع printf در زبان C بکار میبریم. مثلا:

qDebug("variable abc has a zero value");
qDebug("v1=%d, v2=%d", v1, v2);

ما یک فرم دیگه رو هم از این تابع میتونیم بکار ببریم که گاه راحتتره و شبیه cout در زبان C++‎ عمل میکنه.
اما برای اینکه بتونیم از این شکل هم در برنامه هامون استفاده کنیم باید فایل header خاصی رو به برنامه اضافه کنیم:

#include <QtDebug>

حالا میتونیم مثلا اینطور بنویسم:

qDebug()<<"condition 1"<<v1<<v2;

دقت کنید که پرانتزها ضروری هستن.
در این فرم از بیشتر انواع دادهء هم سی++ و هم کیوت میشه استفاده کرد.

خب تا اینجا دیدیم که چطور میشه پیامهایی رو به خروجی فرستاد. کاری که ظاهرا میشه توسط printf و cout هم که آشنای برنامه نویسان سی و سی++ هستن انجام داد. البته مشخصا یک مزیت استفاده از qDebug این هست که نیازی به درج اینکلود هدر سی و سی++ نداریم و یک مزیت دیگر هم اینکه با انواع داده ای خاص کیوت میشه راحتتر کار کرد و نیاز به تبدیل ندارن؛ چیزی که ممکنه درمورد توابع printf و cout نیاز بشه (مثلا احتمالا درمورد رشته های کیوت که از نوع یونیکد هستن).

مسلمه که ما فقط موقعی میتونیم از خروجی متنی در برناممون کمک بگیریم که برنامهء ما یک رابط خط فرمان داشته باشه؛ یعنی ما دستور CONFIG+=console رو به فایل پروژه اضافه کرده باشیم.
البته درصورتیکه برنامه در یک محیط IDE که امکانات دیباگ داره بکار بره، این خروجی مستقیما به دیباگر ارسال میشه و بنظرم دیگه نیازی به داشتن خط فرمان ندشته باشیم (تست نکردم، ولی در مستندات ظاهرا اینطور نوشته).

حالا ممکنه مثلا گاهی ما بخوایم خط فرمان نداشته باشیم یا اینکه اصولا این دستورات خروجی (توسط qDebug) در برنامه باقی بمونن و جزیی از پیامهای خطای برنامه باشن که میخوایم موقعی که برنامه رابط خط فرمان هم نداره، اطلاع داده بشن.
به این منظور میتونیم اینطور عمل کنیم:

#include <QErrorMessage>

و بعد در اوایل بدنهء برنامه:

QErrorMessage::qtHandler();

این باعث میشه پیامهای qDebug بجای رفتن به کنسول (محیط متنی و خط فرمان) یا دیباگر، توسط یک پنجرهء گرافیکی که به کاربر اجازه میده انتخاب کنده که پیام یکسانی دوباره نمایش داده نشه، به اطلاع کاربر برسه.

راستی از QErrorMessage میشه بصورت مستقل و بدون اینکه مجبور باشیم اون رو بعنوان نمایش دهندهء پیامهای qDebug تنظیم کنیم هم استفاده کرد. مثلا به اینصورت:

QErrorMessage errOut;
errOut.showMessage("application's config file is missing!");

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>