تتمة الرسائل ومربعات الحوار في qt



ادخال عدد صحيح (QInputDialog::getInteger)
ان الدالة getInteger ستبدو لك سهلة بعد ان تعلمت كيفية ادخال نص بواسطة الدالة getText
ومعلماتها هي كالتالي :

  1.  
  2.  
  3. int QInputDialog::getInteger ( QWidget * parent, const QString & title, const QString & label, int value = 0, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool * ok = 0, Qt::WindowFlags f = 0 );
  4.  
  5.  
  6.  



نسترجع بهذه الدالة عددا صحيحا int
حيث value هو القيمة الافتراظية
و minValue هو اقل قيمة مدخلة
و maxValue هو اكبر قيمة يمكن ادخالها
اما القيم الاخرى فقد سبق ذكرها فيما سبق
سوف نجرب ذلك بالمعلمات الضرورية

  1.  
  2. int entier = QInputDialog::getInteger(this, 'Nombre', 'Entrez un nombre entier');
  3.  




النتيجة كالتالي:



فماذا لو اردنا ان ندخل قيمة عدد مركب Double
فالامر بسيط فما علينا الا استبدال getInteger ب getDouble
فيكون الكود كالتالي
  1.  
  2. double nombreDecimal = QInputDialog::getDouble(this, 'Nombre', 'Entrez un nombre décimal');
  3.  
  4.  


والنتيجة :


والآن نستعرض كيفية الاختيار من بين قائمة محددة من قبل بواسطة QInputDialog::getItem

  1.  
  2.  
  3. QString QInputDialog::getItem ( QWidget * parent, const QString & title, const QString & label, const QStringList & list, int current = 0, bool editable = true, bool * ok = 0, Qt::WindowFlags f = 0 );
  4.  


ستجد بعض القيم الجديدة
list : قائمة الخيارات الممكنة محددة بواسطة QStringList
current : رقم الاختيار الافتراظي المحدد مسبقا
editable : أي هل يمكن للمستخدم ان يختار من بين القائمة وفقط ام يمكن له ان يدخل خيارا اخر من عنده طبعا تكون معلمة بصحاو خطأ tue أو false
  1.  
  2. void MaFenetre::ouvrirDialogue()
  3. {
  4. pays << 'France' << 'Belgique' << 'Suisse' << 'Canada (québec)' << 'Maroc' << 'Autre';
  5. QInputDialog::getItem(this, 'Votre pays', 'De quel pays es-tu, cher Zéro ?', pays);
  6. }
  7.  
  8.  

وهاهي النتيجة :



تحديد خط النص
علبة الحوار تحديد خط النص من بين مربعات الحوار المعروفة والتي لا غنى عنها ونستطيع ان نستعملها بواسطة QFontDialog هناك خيارات كثيرة في استعمالها يمكنك ان تراجع في وثائق QFontDialog
  1.  
  2. QFont getFont ( bool * ok, const QFont & initial, QWidget * parent, const QString & caption )
  3.  

المعلمة الاولى عبارة عن booleen صح او خطأ التي تحدد ما اذاكان المستخدم قد نقر على الزر موافق
كما يمكن تحديد الخط الافتراظي بواسطة initial
  1.  
  2. void MaFenetre::ouvrirDialogue()
  3. {
  4. bool ok = false;
  5.  
  6. QFont police = QFontDialog::getFont(&ok, m_boutonDialogue->font(), this, 'Choisissez une police');
  7.  
  8. if (ok)
  9. {
  10. m_boutonDialogue->setFont(police);
  11. }
  12. }
  13.  
  14.  
  15.  

والامر بسيط جدا لقد اخذنا الخط الافتراظي من الزر الذي نقرنا عليه والذي هو m_boutonDialogue
ثم حصلنا على الخط الجديد بواسطة QFont والذي عرفناه بpolice



تحديد اللون
سنقوم الان باستدعاء مربع حوار او علبة تحديد اللون
سنستعمل الفئة QColorDialog
  1.  
  2. QColor QColorDialog::getColor ( const QColor & initial = Qt::white, QWidget * parent = 0 );
  3.  
  4.  

الدالة getColor نستعيد بها object من نوع QColor
كما يمكنك ان تحدد القيمة الافتراظية initial هنا استعملنا اللون الابيض
هنا سنعيد قيمة جديدة للون الزر ولكن لا توجد قيمة تسمى setColor بالنسبة للwidgets ولذلك سنستعمل القيمة setPalette
والكود التالي يوظح كل شيئ بالتفصيل
  1.  
  2. void MaFenetre::ouvrirDialogue()
  3. {
  4. QColor couleur = QColorDialog::getColor(Qt::white, this);
  5.  
  6. QPalette palette;
  7. palette.setColor(QPalette::ButtonText, couleur);
  8. m_boutonDialogue->setPalette(palette);
  9.  
  10.  

}
يمكنك ان ترجع الى وثائق qt وتحاول ان تبحث اكثر في كيفية استعمال QPalette


تحديد ملف أو مجلد
1تحديد مجلد (QFileDialog::getExistingDirectory)
  1.  
  2. QString dossier = QFileDialog::getExistingDirectory(this);
  3.  



2 فتح ملف موجود(QFileDialog::getOpenFileName)
علبة الحوار فتح ملف تمكنك منفتح اي ملف تريد كما يمكنك تحديد نوع الملفات التي تريد فتحها وهنا سنحاول فتح ملفات صور ذات امتداد png و gif و jpg و jpeg بحيث لا يظهر في مربع الحوار الا ملفات الصور التي حددنا ملحقاتها
  1.  
  2. void MaFenetre::ouvrirDialogue()
  3. {
  4. QString fichier = QFileDialog::getOpenFileName(this, 'Ouvrir un fichier', QString(), 'Images (*.png *.gif *.jpg *.jpeg)');
  5. QMessageBox::information(this, 'Fichier', 'Vous avez sélectionné :n' + fichier);
  6. }
  7.  
  8.  

النتيجة :

وعند النقر على افتح المسار المحدد سيحفظ في QString والذي سيعرظ في الرساة التالية :

3 حفظ ملف (QFileDialog::getSaveFileName)
نفس الخطوات السابقة ولكن هذه المرة باستعمال حفظ بدلا من فتح
  1.  
  2. QString fichier = QFileDialog::getSaveFileName(this, 'Enregistrer un fichier', QString(), 'Images (*.png *.gif *.jpg *.jpeg)');
  3.  



النتيجة :

هذا ما وفقنا الله لبيانه
والسلام عليكم ورحمة الله وبركاته



تمت طباعة الدرس من موقع مكتبة الدروس
http://qt-ar.org/lessons/show50.html