Pregunta

requiere un botón / enlace dentro de una fila de tabla de un QTableView. Se trata de abrir un diálogo para permitir que la fila para ser editado de manera más eficiente.

Después de horas de buscar en la web Estoy todavía a encontrar un ejemplo decente.

Soy consciente de que esto es probable que se realice utilizando un QItemDelegate, pero no estoy seguro cómo tener un widget funcional dentro de la fila sin forzar el elemento en el modo de edición en primer lugar.

Cualquier ayuda sería muy apreciada.

¿Fue útil?

Solución

Se podría emular la funcionalidad de un enlace subrayando el texto puede hacer clic, a continuación, la captura de la célula clic a través de la señal de cellClicked (fila, columna) y comprobar que col == editColumn. A continuación, la fila se correspondería con el elemento que se está editando.

Por ejemplo,

Nombre de datos | Valor 1 | Valor 2 | Editar

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

...

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

Otros consejos

Se puede utilizar setIndexWidget para eso, ver el Qt documentación más información.

Como ejemplo, para incrustar un botón pulsador en la primera columna de la segunda fila (código no probado):

tableView->setIndexWidget(tableView->model()->index(2, 1), new QPushButton);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top