الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

بعض المشاكل واجهتني مع الqt

بدأه azzoz2 في 4 أكتوبر 2009 · 1 رد · 1,173 مشاهدة · في قسم Cross Platform GUI Libraries العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمته وبركاته ...

واجهتني 3 مشاكل مع الـQT ... وما أدري الخطأ من عندي وأنا جاهل بالحل ولا من عندهم ... وللعلم أعمل على نظام ويندوز XP

1) مشكلة مع الأمر أو الدالة :

QApplication::alert ( QWidget * widget, int msec = 0 )

المشكلة هنا إن النافذة إذا كانت في وضع التصغير يعني في وضع minimized لكن قبل هذا تصغير النافذة لا يكون عبر الزر أو الـbutton اللي يكون في أعلى النافذة ولكن التصغير يكون عبر الضغط على نفس مكان النافذة على شريط المهام prob_smil_2.JPG

الدالة :

QApplication::alert ( QWidget * widget, int msec = 0 )

لا تعمل إلا إذا كانت النافذة ليست نشطة يعني الدالة ()isActiveWindow ترجع false .... لكن المشكلة هنا إن النافذة في وضع التصغير وهذه الدالة ترجع true ... يعني أن الدالة alert لن تعمل ... فما الحل ؟؟؟؟؟

2) مشكلة إدراج صورة في QTextEdit والنص يكون بالعربي وأيضا الـLayoutDirection يكون LeftToRight ...

المشكلة توضحها الصورة :

prob_smil.JPG

هنا : النص "نص جديد" الأصل يكون قبل الصورة لأنه كتب قبل إدراج الصورة ولكن أصبح هنا العكس ... فكيف أدرج صورة تكون متماشية مع سياق النص ؟؟؟ مثل أي محرر نصوص ...

أيضا أتوقع هناك إشكاليات في تعامل QTextEdit مع اللغة العربية حتى في الأسهم لتحريك المؤشر تصبح في حالة النص العربي معكوسة الاتجاه

3) مشكلة البطء الشديد في بدء الدالة

QDesktopServices::openUrl ( const QUrl & url )

سواء بفتح رابط إنترنت أو فتح مجلد ... وهذه المشكلة واجهتها في بعض الأجهزة أو الحواسيب على نظام ويندوز XP وليس كلها ... فما السبب ؟؟؟؟

وجزاكم الله خيرا ...

#2

وعليكــم السـلام ورحمة الله وبركاتـه..

بالنسبة للسؤال الاول فان الضغط على زر Minimized فقط يعمل hide للنافذة ، لكنها ستظل هي النافذة الفعالة Active ، بينما عندما تقوم بالضغط عليها من خلال شريط المهام فانها تصبح Not Active .

والدالة QApplication::alert تعمل فقط في حالة كانت النافذة Not Active حيث تقوم بتغير لونها الافتراضي الى برتقالي في الويندوز .

الان السؤال ماذا تريد أن تفعل بالضبط ؟

وكم عدد النوافذ لديك ؟

في حالة كانت نافذة واحد فقط في البرنامج ، فأعتقد لا يوجد طريقة لعمل alert لها أيضا لماذا تعمل alert للنافذة الفعالة ؟ أعتقد show او showNormal تكفي ؟

اما اذا كانت هناك أكثر من نافذة فربما يمكننا في حالة قام المستخدم بالضغط على Minimized في نافذة ما أن نقوم باستدعاء الدالة QApplication::setActiveWindow ونجعل أي نافذة اخرى هي النافذة الفعالة ، وبهذا تستطيع عمل alert.

أتمنى ان توضح المطلوب أكثر..

اما السؤال الثاني ، جرب ان تغير اتجاه الكتابة الى RTL بدلا من LTR :

QTextEdit[color= #000000;]* textEdit [color= #000000;]= [color= #0000ff;]new QTextEdit;

QTextOption option[color= #000000;]=textEdit[color= #000000;]-[color= #000000;]>document[color= #000000;]([color= #000000;])[color= #000000;]-[color= #000000;]>defaultTextOption[color= #000000;]([color= #000000;]);

option.[color= #808000;]setTextDirection[color= #000000;](Qt[color= #000000;]::[color= #808000;]RightToLeft[color= #000000;]);		[color= #007f00;]// RTL.

textEdit[color= #000000;]-[color= #000000;]>document[color= #000000;]([color= #000000;])[color= #000000;]-[color= #000000;]>setDefaultTextOption[color= #000000;](option[color= #000000;]);

ولم تعمل معي ايضا ، ربما يكون bug او مشكلة في الكود ..

لقد جربت كذلك تغيير اتجاه ال textFrame و textBlock و textChar لكن النتيجة نفسها ، والصور تأتي في البداية وليس في المنتصف !

سأبحث عن حل وأوافيك ان شاء الله ..

وبالنسبة للدالة QDesktopServices::openUrl فهي تعمل معي بشكل لا بأس به سواءا في فتح المجلدات او فتح موقع على ال browser. ربما ان حجم الرام قليل بالنسبة لك ، او المشكلة من المتصفح نفسه. "جرب ضع IE هو الافتراضي"

ويمكنك كحل اخر ان تجرب ان تستخدم الفئة QProcess لفتح أي برنامج .

بالتوفيق.

مواضيع مشابهة