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

أرجو شرحا للدالة currentItem

بدأه محمـد عواد في 1 أبريل 2010 · 5 رد · 906 مشاهدة · في قسم Cross Platform GUI Libraries العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أرجو التكرم بشرح الدالة currentItem سواء كانت في QTreeWidget أو أي Widgets مشابهة خصوصا إذا كانت عناصر QTreeWidget تعرض بيانات من داخل قاعدة بيانات QSqlite

وجدت أكواد في برنامج مشروع مكتبة للينوكس للأخ أبو زكريا ولكنه يستخدم فيها ملفات xml وأنا أريد نفس الفكرة عند التعامل مع قواعد البيانات

فمثلا لو عندنا QTreeWidget وبها عناصر مرتبطة بقاعدة البيانات أريد عند الضغط على العنصر مرتين أن يتم فتح نافذة جديدة تعرض المعلومات المرتبطة بهذا العنصر في textedit مثلا أو أي أداة لعرض المعلومات

أو مثلا عند الضغط مرة واحدة يتم عرض المعلومات في textedit في نفس النافذة وهكذا

قمت بعدة محاولات لإنشاء متغير يحتفظ ببيانات الـ currentitem ولكني لم أوفق

هناك شيء من الغموض في هذه الدالة بالنسبة لي

فأرجو المساعدة وجزاكم الله خيرا

#2

currentItem فى اى سياق بتعبر عن "العنصر الحالى"

1
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#3
ahmed_youssef كتب:

currentItem فى اى سياق بتعبر عن "العنصر الحالى"

بارك الله فيك

أرجو التوضيح أكثر ، فأنا مثلا حينما أريد إخفاء العنصر الحالي استخدم الكود التالي

 void ChoiceBookFrm::on_betakaBtn_clicked()
{
    ui->treeWidget->currentItem()->setHidden(true);

}

ولكن ماذا لو أردت حذف البيانات التابعة للعنصر الحالي من قاعدة البيانات ؟

كذلك أريد أن أعرف كيف أتعامل مع كل خصائص العنصر الحالي الخاصة بالبيانات المرتبطة به داخل قاعدة البيانات ؛ مثل عرض البيانات ، أو إضافة بيانات مع عنصر جديد أو تغيير اسم العنصر بشرط أن يتم التغيير أيضا داخل قاعدة البيانات وهكذا

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

تم تعديل هذه المشاركة بواسطة محمـد عواد في 1 أبريل 2010 في 15:24

#4

السلام عليكم

تفضل اخي وضعت لك مثال للحصول على نص العنصر الذي تم تحديده في TreeView واظهار النص في رسالة.(قم بالتغيرات اللازمة لاظهار النص في اي widget تريد)


void Main::getSelectedItem()
{
QModelIndex index = treeView->currentIndex();
QString data = index.data(Qt::DisplayRole).toString();
QMessageBox::information(data );

}

تم تعديل هذه المشاركة بواسطة xpero في 2 أبريل 2010 في 23:06

1
#5
xpero كتب:

السلام عليكم

تفضل اخي وضعت لك مثال للحصول على نص العنصر الذي تم تحديده في TreeView واظهار النص في رسالة.(قم بالتغيرات اللازمة لاظهار النص في اي widget تريد)


void Main::getSelectedItem()
{
QModelIndex index = treeView->currentIndex();
QString data = index.data(Qt::DisplayRole).toString();
QMessageBox::information(data );

}

جزاك الله خيرا .. ولو ممكن تشرح لي هذا الكود بارك الله فيك فأنا مازلت مبتدئ

#6

محمـد عواد

بالنسبة لل Qt فان جميع ال View Widgets مثل ListView,TreView,List... فهي تستعمل تقنية Model/View .حيث ان ال Model هو الذي يتحكم في البيانات المراد اظهارها بينما ال View Widget يكون دوره هو اظهار البيانات فقط .

لنرجع للكود السابق:

هنا نقوم بتعريف متغير من نوع QModelIndex و سنخزن فيه index العنصر الحالي لل treeView Widget


QModelIndex index = treeView->currentIndex();

ال widgets مثل ال TreeView يمكنها ان تحمل نوعين من البيانات: ايقونات + نصوص:

لذلك يجب تحديد اي نوع من هذه البيانات التي نريد الحصول عليها:P

Qt::DisplayRole : ترجع لنا نص عنصر معين في ال treeView

Qt::DecorationRole : ترجع لنا ايقونة العنصر .

مثلا هنا يتم تخزين نص العنصر الحالي لل treeView في متغير من نوع QString


QString data = index.data(Qt::DisplayRole).toString();

واخيرا اظهار النص في MessageBox


QMessageBox::information(data );

*****

اخي انصحك بقراءة ال Documentation الخاصة ب Qt للمزيد من التفاصيل حول الموضوع :cool:

تم تعديل هذه المشاركة بواسطة xpero في 3 أبريل 2010 في 14:33

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