2013-10-18 21 views

cevap

8

Aşağıda, tablo hücresinin metnini tıklattığınızda nasıl alabileceğinize dair bir örnek verilmiştir. Bazı MyClass sınıfında tanımlanmış bir QTableView varsayalım. Sen clicked bağlanmasını yüklemeniz gerekir sinyali (eğer hedef bağlı olarak çok da doubleClicked, pressed ve diğer sinyalleri kullanabilirsiniz) ve aşağıda gösterildiği gibi, bunun için karşılık gelen onTableClicked() yuvası uygulamak:

connect(tableView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(onTableClicked(const QModelIndex &)); 

Yuvası uygulanması:

void MyClass::onTableClicked(const QModelIndex &index) 
{ 
    if (index.isValid()) { 
     QString cellText = index.data().toString();   
    } 
} 
+0

Yukarıdaki örnek iyi çalışıyor. – ShivaPrasad

+0

@vahancho çözümünü sağladığınız için teşekkür ederiz. Tıklayın (const QModelIndex &) ve cellClicked (int satır, int sütunu) arasındaki fark nedir? Neden tek bir API olamaz? –

+1

@ XavierGeoffrey, fark şu ki bu sinyaller farklı sınıflarda bildirildi: Sırasıyla QAbstractItemView :: clicked() 've' QTableWidget :: cellClicked() '. İlk sinyal, ağaç görünümü, tablo görüntüleme, liste görüntüleme gibi tüm öğe görünümü sınıflarında, ikincisi ise yalnızca tablo widget'ları için kullanılabilir. Ayrıca argümanlar farklıdır: Bazen, bir ebeveynin de bulunduğu, özellikle ağaç resimleri için, satır ve sütuntan bir model endeksini geçmek çok daha uygundur. – vahancho

İlgili konular