2011-03-20 26 views

Respuesta

18

Para una casilla de verificación que utiliza el método setCheckState del artículo, debe hacer lo que necesita tanto para la lista como para los widgets de tablas. A ver si el código de abajo funcionaría para usted: Reproductor

lista:

QListWidgetItem *item0 = new QListWidgetItem(tr("First"), listWidget); 
QListWidgetItem *item1 = new QListWidgetItem(tr("Second"), listWidget); 

item0->setCheckState(Qt::Unchecked); 
item1->setCheckState(Qt::Checked); 

widget de tabla:

QTableWidgetItem *item2 = new QTableWidgetItem("Item2"); 
item2->setCheckState(Qt::Checked); 
tableWidget->setItem(0, 0, item2); 

Puede utilizar delegados (QItemDelegate) para otros tipos de widgets del editor, el ejemplo está aquí: Spin Box Delegate Example.

Spin Box Delegate

espero que esto ayude.

+6

Wow. Sorprendido de que este comentario haya sido seleccionado como respuesta correcta. Debido a que el establecimiento de QListWidgetItem en estado de comprobación no está del todo 'añadiendo checkbox a Table o a List'. Además, crear delegados no es la forma de insertar esos widgets en la Tabla o Lista. Se usa solo para editar celdas. –

+0

puede ser porque esto es lo que OP quería. Y dado que su pregunta es abierta, esta respuesta es una de las formas en que puede crear/configurar su widget. Además, en la mayoría de los casos, quiere que se muestre un control cuando edita el campo y no lo ve. El suministro de un widget a la célula a través de setCellWidget no hace que este widget forme parte del modelo, de todos modos tendrá que encargarse del contenido y los eventos del widget manualmente. –

+0

¿Puede profundizar en su widget "QList ** Widget ** y QTable **. Es imposible delegar en los delegados" el comentario? Ambos widgets son descendientes de QAbstractItemView y nada le impide configurar delegados de elementos para ellos. El ejemplo del spinbox de mi publicación funciona perfectamente con QTableWidget –

41

Hay dos métodos:

void QTableWidget::setCellWidget (int row, int column, QWidget * widget) 

y

void QListWidget::setItemWidget (QListWidgetItem * item, QWidget * widget) 

Permiten insertar cualquier tipo de artilugio y otros controles que heredan QWidget. La casilla de verificación/botón de opción/cuadro combinado hereda de QWidget.

+5

Acepto que es confuso, esto no fue seleccionado como la respuesta correcta. No pasé mucho tiempo investigando, pero pensé que establecer la marca de verificación en un QTableWidgetItem haría que apareciera una casilla de verificación, pero no fue así. setCellWidget() funcionó, sin embargo. – Scott

+1

¿cómo puedo leer si está marcado o no? – Petr

+1

debes verificar con 'checkbox.checkState() == 0 o == 2' uno desbloqueado y otro ckecked, excampled con python, debes convertir. a -> – PersianGulf

Cuestiones relacionadas