Qt

2010-03-18 16 views
5

'daki selectionchange olayı nasıl elde edilir QWidget'dan miras alınan bir sınıfa sahibim, şimdi bu sınıfta QListView nesnesi oluşturuyor ve görüntülenecek öğeleri dolduruyor olacağım. Liste görünümündeki öğelerin seçimi değiştiğinde, selectionChange olayını almak istiyorum.Qt

Bunu nasıl başarabilirim? Lütfen bana kısaca anlat.

cevap

8

var

connect(yourListWidget, SIGNAL(itemSelectionChanged()), this, SLOT(selChanged())); 

, öğeyi seçmek için kullanılacak bir model olacaktır. Buna QItemSelectionModel denir. senin QListView ile Örneğin

, sen selectionModel bu şekilde elde edebilirsiniz:

void currentChanged (const QModelIndex & current, const QModelIndex & previous) 
void currentColumnChanged (const QModelIndex & current, const QModelIndex & previous) 
void currentRowChanged (const QModelIndex & current, const QModelIndex & previous) 
void selectionChanged (const QItemSelection & selected, const QItemSelection & deselected) 

: Artık

QItemSelectionModel* selectionModel() const; 

, o modelden, birçok sinyalleri bağlanmak mümkün olacak Sanırım biraz yardımcı olacak!

+0

andy .. işte çalıştı .. thaks çok .. ama ben başka bir sorun ile sorunum var, eğer ben keyreseyde keypress olayı yapmazsanız keypress olayı gelmiyor.Ancak "keyPressEvent" yöntemleri overrden rağmen hala değilim event alma .. keypress olayını listeye nasıl yükleyebilirim? Teşekkürler – Naruto

+0

Bu, sanırım etkinlikle ilgili sorun, farklı "tür" olayları kullanmak zorunda görünüyorsunuz ... Sinyaller ve yuvalarla, seçimin nasıl değiştiğini umursamıyorsunuz, sadece değiştiğinde bunu bilmenizi sağlıyor. .. Her neyse, liste görünümünüze bir eventfilter eklemenizi öneririm ... http://stackoverflow.com/questions/1785251/problem-filtering-mousepressevent-with-installeventfilter/1785307#1785307 –

+0

teşekkürler, Buna bakacağım, eğer bir problemim olursa sana geri döneceğim, teşekkür ederim. – Naruto

0

http://doc.trolltech.com/4.6/qlistwidget.html Görmek yerine QListWidget'i kullanmak isteyebilirsiniz, nedenini hatırlamıyorum, ancak bu sınıf kullanmak istediğiniz bu sinyallere sahiptir.


http://doc.trolltech.com/4.6/qlistwidget.html#itemSelectionChanged Bu

bağlanmak zorunda sinyaldir.

sınıf bildiriminde bir yuva yapın:

private slots: 
    void selChanged(); 

doldurun bu slot Seçim değişikliği üzerine yapmak istediğim ile. Sinyali sınıfınızın bir yerinde bu yuvaya bağlayın - belki de QWidget türevinizin yapıcısında. Bir görünüm varsa bunu

+0

Gelmesini önermediğiniz yolu denedim .. connect false ve bir şey daha döndürüyor, Qt doc, selectchaged sanal bir slot olduğunu söylüyor, slotu geçersiz kılmayı denedim .. hala gelmiyor .. i don ' t hayır neyin yanlış olduğunu. pls – Naruto

+0

yardım edebilirim cevabımı güncelledim. şimdi çalışmalı. –