Me gustaría tener una columna en QTableWidget
NOT editable.
En los foros he leído mucho acerca de flags
pero no he podido implementarlo.¿Cómo hacer que una columna en QTableWidget solo sea de lectura?
Respuesta
Insertar en el QTableWidget siguientes tipos de artículos:
QTableWidgetItem *item = new QTableWidgetItem();
item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
funciona bien!
EDIT:
QTableWidgetItem *item = new QTableWidgetItem();
item->setFlags(item->flags()^Qt::ItemIsEditable);
Ésta es una solución mejor. Gracias a @priomsrb.
El resultado del uso de XOR depende de cuál es el estado actual. Sugeriría usar
item->setFlags(item->flags() & ~Qt::ItemIsEditable);
para asegurarse de que la edición esté desactivada independientemente de la configuración actual.
Intenté esta solución tuya y no funcionó: el compilador se quejó del '~'. – Momergil
Para aplicar el código de @ Narek a filas o columnas, simplemente use un bucle for simple y ponga una condición para incluir los indicadores para filas/columnas que no desea que sean editables.
El siguiente código lee un archivo CSV en un QTableWidget:
if(!rowOfData.isEmpty()){
for (int x = 0; x < rowOfData.size(); x++)
{
rowData = rowOfData.at(x).split(",");
if(ui->table_Data->rowCount() <= x) ui->table_Data->insertRow(x);
for (int y = 0; y < rowData.size(); y++)
{
QTableWidgetItem *item = new QTableWidgetItem(rowData[y],QTableWidgetItem::Type);
if(y < 3) item->setFlags(item->flags()^Qt::ItemIsEditable); // Only disables the first three columns for editing, but allows the rest of the columns to be edited
ui->table_Data->setItem(x,y,item);
ui->table_Data->repaint();
}
}
}
llegué a una sugerencia mejor, simplemente sobrescribir la señal cellDoubleClicked con una nueva ranura. Esto es, si desea que ninguna de las celdas sea modificada
No hay necesidad de hacer eso, es por eso que tenemos banderas de artículos. Solo una línea para arreglar su problema. – reggie
¿La diferencia es que debería excluir el indicador del mapa de bits en todos sus elementos secundarios? Mi sugerencia era excluir la escritura de 20 líneas con & ~ bitmap flag si desea que todo el widget sea de solo lectura. En realidad, mi comentario fue incorrecto de todos modos, debería decir desconectar la señal de cellDoubleClicked – Damdidam
- 1. ¿Cómo configura un DateTimePicker para que sea de solo lectura?
- 2. Hacer columna de solo lectura usando apache poi
- 3. ¿Cómo hacer una tabla de solo lectura en SQL Server?
- 4. Hacer una rama TFS de solo lectura
- 5. iPhone/iPad: ¿Cómo hacer que UITextField sea de solo lectura (pero no está deshabilitado)?
- 6. ¿Cómo puedo hacer que un alma de Visual Studio 2010 sea de solo lectura?
- 7. ¿Cómo hacer que la columna WPF Datagrid no sea enfocable?
- 8. ¿Cómo hacer un archivo de "solo lectura"?
- 9. ¿Hay algún beneficio en hacer que un campo C# sea de solo lectura si es apropiado?
- 10. ¿Cómo puedo hacer que la referencia en sentido ascendente de una rama git sea de solo lectura?
- 11. ¿Hay alguna manera de hacer que el widget de texto Tkinter sea solo de lectura?
- 12. QSplitter: ¿Cómo hacer que la segunda columna sea más pequeña?
- 13. Lectura de elementos seleccionados de QTableWidget
- 14. Python xlwt: hacer una columna de solo lectura (protección de celda)
- 15. Subversion: ¿es posible deshabilitar todas las confirmaciones y hacer que el repositorio solo sea de lectura?
- 16. SQL Server 2005 - Establecer una columna como de solo lectura
- 17. Hacer solo una columna de QTreeWidgetItem editable
- 18. Java JTable - Hacer solo una columna editable
- 19. meld: Hacer que una parte solo lea
- 20. ¿Cómo puedo hacer que un formulario HTML completo sea "de solo lectura"? En el lado del servidor, por favor
- 21. Alterar una columna para que sea nula
- 22. ¿Cómo hacer que los grupos de JasperReports comiencen en una nueva página solo cuando sea necesario?
- 23. ¿Cómo ordenar datos en QTableWidget?
- 24. Cómo hacer que una columna sea sensible a mayúsculas y minúsculas en sql 2005 o 2008
- 25. ¿Cómo puedo hacer que un control de Windows Forms sea de lectura?
- 26. Qt - ¿Cómo puedo hacer que una Columna particular de mi QTableView no sea editable?
- 27. ¿Cómo hacer que el fondo de una JTable sea transparente?
- 28. Hacer que una lista enlazada sea segura
- 29. ¿Cómo hacer que una clave compuesta sea única?
- 30. Cómo hacer que TimePicker sea más pequeño
Sería mejor usar 'item-> setFlags (item-> flags()^Qt :: ItemIsEditable);'. Esto dejará las otras marcas intactas – priomsrb
@priomsrb ¿Por qué usas un exclusivo o (XOR) en lugar de 'item-> flags() & ~ Qt :: ItemIsEditable' como lo sugiere el usuario2923436? El resultado de XOR depende del estado predeterminado de los indicadores. – m7913d
@ m7913d Creo que tienes razón. Mi solución solo alterna el estado editable. Por lo tanto, no funcionaría si el elemento ya era solo de lectura. – priomsrb