2013-03-09 11 views
7

tıklayın, ne var şudur. Bu QListWidget içinde, "Mail 1", "Mail 2", ...QListWidget:</p> <p>A QListWidget, böyle içindeki bazı öğelerle:</p> <p><code>ListMail</code> benim QListWidget olan öğe üzerinde Olay Temelde

gibi öğelere sahibim. Ve herhangi bir fikrim yok, nasıl bir sinyal verebilirim (örneğin) "Mail 1 "bir yuvaya (onClick) veya böyle bir şeye bağlanın.

Zaten gibi şeyler denedim: connect(ui->listMail->selectedItems(0), SIGNAL(triggered()), this, SLOT(openMessage()), ama hiç çalışmaz ...

Herhangi bir yardım?

Teşekkürler!

cevap

7

itemClicked sinyaline bağlamanız gerekir. Sinyal, tıklanan öğe olan bir QListWidgetItem* sağlayacaktır. İlk biriyse o zaman incelemek ve kontrol edebilirsiniz:

MyClass::MyClass(QWidget* parent) 
    : QWidget(parent) 
{ 
    connect(ui->listMail, SIGNAL(itemClicked(QListWidgetItem*)), 
      this, SLOT(onListMailItemClicked(QListWidgetItem*))); 
} 

void MyClass::onListMailItemClicked(QListWidgetItem* item) 
{ 
    if (ui->listMail->item(0) == item) { 
     // This is the first item. 
    } 
} 
+0

Çok teşekkürler! Bir çekicilik gibi çalıştı! –

+1

Ayrıca bir "QListWidgetItem" işlevinin "bağlanmaya" geçme nedenini de açıklamam gerekirdi: "QObject" işlevini genişletmediği için sinyal yaymayabilir (veya yuvaları olabilir). – andref

+0

Nedenini bilmiyorum ama benim için (PyQt sürüm 5.7.1 kullanıyorum) 'itemClicked' işe yaramadı - sinyal gönderilmedi. Ancak 'itemPressed''e geçerken sorun yaşanmadı – sunyata

2

QListWidget tıklandığı madde söyleyecektir bir sinyal QListWidget::itemPressed(QListWidgetItem *item) sahiptir. Bu sinyali kendi yuvanıza bağlayabilirsiniz. Diğer ilgili sinyaller de vardır. documentation'a bakın.

+0

Teşekkürler! :) –

İlgili konular