2009-12-04 10 views
5

Tengo QTableView y QStandardItemModel. ¿Hay una columna que pueda contener casillas de verificación que sean editables por el usuario sin usar delegados o utilizando las clases de modelo abstracto? No es que no pueda hacerlo, solo quiero minimizar el código, lo encontraría excesivo para las casillas de verificación simples.Cómo puedo agregar una casilla de verificación editable en QTableView utilizando solo QStandardItemModel

Al usar model.setData(index, Qt::Unchecked,Qt::CheckStateRole) esto crea la casilla de verificación pero no es editable por el usuario (el texto al lado de la casilla de verificación es).

He usado modelTX.setData(index, FALSE) pero esto crea un cuadro combinado que contiene verdadero y falso.

Voy a intentar setItemData.

Respuesta

14

pls, comprobar si el siguiente ejemplo funcionaría para usted:

QStandardItemModel* tableModel = new QStandardItemModel(); 
// create text item 
tableModel->setItem(0, 0, new QStandardItem("text item")); 
// create check box item 
QStandardItem* item0 = new QStandardItem(true); 
item0->setCheckable(true); 
item0->setCheckState(Qt::Checked); 
item0->setText("some text"); 
tableModel->setItem(0, 1, item0); 
// set model 
ui->tableView->setModel(tableModel); 

esperanza que esta ayuda, que se refiere a

+0

thx por la respuesta. Lo haré el lunes cuando regrese al trabajo, pero creo que funcionará. –

+0

funciona, gracias. ¿Pero cómo marcar cada casilla si está marcada o no? –

+1

@ Suda.nese Use 'item0-> checkState()' para este propósito. PD. Cuando usamos Qt usualmente para cada método setter a la 'setSomething()' hay un getter llamado 'something()'. –

Cuestiones relacionadas