تسجيل الدخول   الأسئلة المتكررة     بحث
اليوم هو الجمعه سبتمبر 03, 2010 3:08 pm

جميع الأوقات تستخدم GMT




إرسال موضوع جديد الرد على الموضوع  [ 9 مشاركة ] 

الكاتب رسالة
 عنوان المشاركة: بخصوص QListWidget
مشاركةمرسل: الاحد أغسطس 16, 2009 8:27 pm 
غير متصل
عضو نشيط
عضو نشيط



السلام عليكم ورحمة الله
اولا انا استخدم Qt مع بايثون
لدي QListWidget بها عدة عناصر اريد عندما يختار المستخدم احدها
ياخذ البرنامج الـ string في هذا العنصر ليستخدمه "المستخدم يختار من العناصر "
قرات الوثائق ولكني لم اجد ما ابحث عنه او ربما لم افهم جيدا
هل من مساعد؟؟


أعلى
 يشاهد الملف الشخصي  
 
 عنوان المشاركة: Re: بخصوص QListWidget
مشاركةمرسل: الاحد أغسطس 16, 2009 8:48 pm 
غير متصل
مدير الموقع
مدير الموقع
صورة العضو الشخصيه




استخدم هذا ال signal
CODE:
QListWidget::currentTextChanged ( const QString & currentText ) 

وقم بربطه مع slot

هذا كود بسي++ ، حوله لبايثون ..
او انتظر من يعرف بايثون ليساعدك .

CODE:
// In Constructor:
connect(listWidget,SIGNAL(currentTextChanged(const QString&)),this,SLOT(doSomething(const QString&)));

// Slot
WidgetClassName::doSomething(const QString& str)
{
   // do what you want with str
}


بالتوفيق.

_________________


أعلى
 يشاهد الملف الشخصي  
 
 عنوان المشاركة: Re: بخصوص QListWidget
مشاركةمرسل: الاحد أغسطس 16, 2009 10:29 pm 
غير متصل
عضو نشيط
عضو نشيط



بصراحة مش فاهم
طب مش المفروض يكون فيه متغير هياخد قيمة الـ str
السيجنال هنا ان النص selected .... صح؟
يعني مثال لو عندي
list=QListWidget
btn=QPushButton

عايز لما اليوزر يختار item من list ويضغط الbtn
يطبع التكست اللي في الـ item ده
مش مهم لغة البرمجة ان شاء الله افهم
معلش هاتعبكم معايا بس ده اول تطبيق ليا في Qt استحملوني


أعلى
 يشاهد الملف الشخصي  
 
 عنوان المشاركة: Re: بخصوص QListWidget
مشاركةمرسل: الاحد أغسطس 16, 2009 11:27 pm 
غير متصل
مدير الموقع
مدير الموقع
صورة العضو الشخصيه




lio_013 كتب:
عايز لما اليوزر يختار item من list ويضغط الbtn
يطبع التكست اللي في الـ item ده


بناءا على هذا الطلب ، يجب ان تربط حدث الضغط على الزر clicked مع اي slot تعرفه انت .
وفي داخل ال slot قم باستدعاء الدالة currentItem والتي ترجع لك item
وبعد ذلك استدعي الدالة text من هذا ال item

CODE:
QListWidgetItem * QListWidget::currentItem () const

CODE:
QString QListWidgetItem::text () const


مثال :

CODE:
// In constructor
connect(btn,SIGNAL(clicked()),this,SLOT(btnClicked()));

ClassName::btnClicked()
{
   QString str = list->currentItem()->text();
}


وأي سؤال يرحب به،
بالتوفيق.

_________________


أعلى
 يشاهد الملف الشخصي  
 
 عنوان المشاركة: Re: بخصوص QListWidget
مشاركةمرسل: الاحد أغسطس 16, 2009 11:34 pm 
غير متصل
مدير الموقع
مدير الموقع
صورة العضو الشخصيه




للتوضيح :
الكود الذي وضعته لك في الرد الاول ، يتعامل مع ال string فورا عندما تضغط على ال item في listWidget.
اما الكود الثاني ، يتعامل مع ال string عندما تضغط على الزر btn .

اتمنى يكون الشرح واضح.

_________________


أعلى
 يشاهد الملف الشخصي  
 
 عنوان المشاركة: Re: بخصوص QListWidget
مشاركةمرسل: الاثنين أغسطس 17, 2009 9:30 pm 
غير متصل
عضو نشيط
عضو نشيط



شكرا جزيلا
لقد فهمت التكوين العام لكني لم استطع تطبيقها في بايثون
ارسلت اسال سترايكر وانتظر رده
جزاكم الله خير


أعلى
 يشاهد الملف الشخصي  
 
 عنوان المشاركة: Re: بخصوص QListWidget
مشاركةمرسل: الاثنين أغسطس 17, 2009 11:33 pm 
غير متصل
فريق عمل الموقع والمجلة
فريق عمل الموقع والمجلة



وعليكم السلام

زى ماقال احمد بالظبط دا مثال توضيحى
الفكرة انك قدامك حلين لو انت هتستخدم زر فهتحتاج تعرف العنصر الحالى فى الليست.. ودا عن طريق currentItem
او انك تتبع كل التغييرات ودا هيتم عن طريق ربط الإشارة currentTextChanged بأى ميثود .. لاحظ انها بتمرر النص كمعامل للslot
فانا عملتلك المثال فى رابط الإتنين وعيش بقة ;)
CODE:
import sys
from PyQt4 import QtCore, QtGui


class TWidget(QtGui.QWidget):
   
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.vbox=QtGui.QVBoxLayout(self)
        self.qlistwidget=QtGui.QListWidget(self)
        map(self.qlistwidget.addItem, [str(x) for x in range(5)])
       
        self.vbox.addWidget(self.qlistwidget)
        self.btn=QtGui.QPushButton("Click me..", self)
        self.vbox.addWidget(self.btn)
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('TWidget')
       
        self.setupConnections()
       
    def setupConnections(self):
        self.connect(self.qlistwidget,QtCore.SIGNAL("currentTextChanged(const QString&)"),self.onCurrentTextChanged);
        self.connect(self.btn, QtCore.SIGNAL("clicked()"), self.onBtnClicked)
       
    def onBtnClicked(self):
        item=self.qlistwidget.currentItem().text()
        QtGui.QMessageBox.information(None, "res", item)
       
    def onCurrentTextChanged(self, text):
        print text

app = QtGui.QApplication(sys.argv)
w = TWidget()
w.show()
sys.exit(app.exec_())

_________________


أعلى
 يشاهد الملف الشخصي  
 
 عنوان المشاركة: Re: بخصوص QListWidget
مشاركةمرسل: الثلاثاء أغسطس 18, 2009 12:29 am 
غير متصل
عضو نشيط
عضو نشيط



تسلم ايدك يا بطل
قريب ان شاء الله تديني رايك في البرنامج لما اخلصه


أعلى
 يشاهد الملف الشخصي  
 
 عنوان المشاركة: Re: بخصوص QListWidget
مشاركةمرسل: الثلاثاء أغسطس 18, 2009 12:49 pm 
غير متصل
فريق عمل الموقع والمجلة
فريق عمل الموقع والمجلة



اكيد شئ يسعدنى :)

_________________


أعلى
 يشاهد الملف الشخصي  
 
عرض مشاركات سابقة منذ:  مرتبة بواسطة  
إرسال موضوع جديد الرد على الموضوع  [ 9 مشاركة ] 

جميع الأوقات تستخدم GMT


المتواجدون الآن

المستخدمون المتصفحون لهذا المنتدى: لا يوجد أعضاء مسجلين متصلين و 1 زائر


لا تستطيع كتابة مواضيع جديدة في هذا المنتدى
لا تستطيع كتابة ردود في هذا المنتدى
لا تستطيع تعديل مشاركاتك في هذا المنتدى
لا تستطيع حذف مشاركاتك في هذا المنتدى
لا تستطيع إرفاق ملف في هذا المنتدى

البحث عن:
الانتقال الى:  

احصائيات كيوتي العربي في رتب

تطوير qt-ar.org

All Rights Reserved to Sama for Electronic Services, Egypt [Dkhila | El-Sinbelawen], This Site Using phpBB Script, Translated By phpBBArabia