Saltar al contenido

Las columnas cambian de tamaño automáticamente al tamaño de QTableView

Nuestro team de especialistas despúes de varios días de investigación y de recopilar de información, obtuvimos la solución, queremos que resulte útil para ti para tu plan.

Solución:

Este código estira igualmente cada columna para que se ajusten al ancho de la tabla.

table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

Documentos:

  • QHeaderView::setSectionResizeMode
  • Vea los modos de cambio de tamaño aquí.

Hay un indicador de encabezado para garantizar que la última columna de QTableView llene su principal si se cambia el tamaño. Puedes configurarlo así:

table_view->horizontalHeader()->setStretchLastSection(true);

Sin embargo, eso no cambia el tamaño de las otras columnas proporcionalmente. Si también desea hacer eso, puede manejarlo dentro del resizeEvent de su padre de la siguiente manera:

void QParent::resizeEvent(QResizeEvent *event) 
    table_view->setColumnWidth(0, this->width()/3);
    table_view->setColumnWidth(1, this->width()/3);
    table_view->setColumnWidth(2, this->width()/3);

    QMainWindow::resizeEvent(event);

La clase QParent es una subclase de QMainWindow.

Los widgets QTableView, QTreeView y sus clases derivadas (como QTableWidget) tienen estos dos métodos útiles:

QHeaderView* horizontalHeader() const;
QHeaderView* verticalHeader() const;

Si abre la documentación para una clase QHeaderView, encontrará métodos que configuran la apariencia y el comportamiento del encabezado de fila o columna para las vistas de elementos. Puede resolver su problema mediante uno de estos métodos:

  1. void QHeaderView::stretchLastSection( bool tramo )
    Como mencionó Davy Jones.

    Ejemplo:

    QTableView *table = new QTableView();  
    table->horizontalHeader()->setStretchLastSection(true);
    
  2. void QHeaderView::setResizeMode (modo ResizeMode)
    Como modo puede configurar QHeaderView::Stretch o QHeaderView::ResizeToContents.
    Desafortunadamente, este método tiene un inconveniente: después de aplicarlo, no podrá cambiar el tamaño de las columnas (o filas) manualmente (en la GUI) o mediante programación.

    Ejemplo:

    QTableView *table = new QTableView();  
    table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
    

Si te ha sido de provecho nuestro post, sería de mucha ayuda si lo compartes con el resto entusiastas de la programación de este modo contrubuyes a extender esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *