2010-12-10 11 views
20

QTableView'un bir tablo satırında bir düğmenin/bağlantının olmasını gerektirir. Bu, satırın daha verimli bir şekilde düzenlenmesini sağlamak için bir diyalog açmaktır.Qt - QTableView - Tablo satırında tıklanabilir düğme

Web’ye baktıktan sonra, iyi bir örnek bulamadım.

Bunun bir QItemDelegate kullanılarak yapılması muhtemel olduğunun farkındayım, ancak öğeyi önce düzenleme moduna zorlamadan satır içinde nasıl işlevsel bir widget'a sahip olacağından emin değilim.

Herhangi bir yardım

büyük takdir.

+0

siz "tablo satırında Düğmesi" diyerek neyi kastediyorsunuz? Bütün sıra? Veya tek bir hücrede mi? –

cevap

1

: Örnek olarak

, ikinci sıradaki (denenmemiş kodu) ilk sütununda bir düğme yerleştirmek cellClicked (satır, col) sinyali ile hücre tıklayın ve col == editColumn olduğunu kontrol edin. Ardından satır, düzenlemekte olduğunuz öğeye karşılık gelir.

Örneğin,

Veri Isim | Değer 1 | Değer 2 | Düzenleme

connect (tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(editSlot(int, int))); 

... 

void ClassName::editSlot(int row, int col){ 
    if (col == 3) { 
    doWork(row); 
    } 
} 
+0

Kabul edilen cevap neden sürekli olarak soruyu cevaplamakta başarısız oluyor? Yalnızca tek bir statik düğme eklemek için bir tablo yuvası bağlantısının tanımlanması veya tablo tanım zamanında bir tablo öğesine bağlantı yapılması anlamsızdır. Dürüst olmak gerekirse, StackOverflow, şu anda en fazla notu "kabul edilen" olarak alan yanıtı dinamik olarak işaretlemek için varsayılan olarak ayarlanmalıdır. –

20

Bunun için setIndexWidget'u kullanabilirsiniz, daha fazla bilgi için Qt documentation'a bakın. Daha sonra, tıklanabilir metin altını yakalayarak bir bağlantı işlevselliğini taklit olabilir

tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton); 
+1

Büyük veri kümelerinde, bir satır düzeyi widget'ının ayarlanmasının kayda değer bir performans kaybına yol açabileceğini okudum. – cweston