2010-10-14 8 views
7

Estoy usando Qtableview con QsqlTableModel para rellenar una tabla de datos. Quiero ordenar la columna según la selección del usuario en el encabezado de la columna.Qt Qtableview no recibe señal para el elemento del encabezado al hacer clic en

me trataron de la manera mencionada en QTableView sorting signal? para obtener la señal (obtener la cabecera horizontal desde QtableView y conecte la señal sectionclicked (int lógica índice). Sin embargo, la misma señal no está siendo emitido cuando hago clic sobre el encabezado de la columna.

Por favor, encontrar el código en la que se realiza la conexión: Variable

de usuario:

QHeaderView *m_horiz_header; 

archivo .cpp

m_sqltablemodel->setTable(tabel_name); 
m_sqltablemodel->setEditStrategy(QSqlTableModel::OnManualSubmit); 
m_sqltablemodel->select(); 

m_horiz_header= m_table_view->horizontalHeader(); 
connect(m_horiz_header, SIGNAL(sectionClicked (int logicalIndex)), 
    this, SLOT(on_sectionClicked (int logicalIndex))); 

función de la ranura para la clasificación:

void class::on_sectionClicked (int logicalIndex) 
{ 
    m_horiz_header->setSortIndicator(logicalIndex, Qt::AscendingOrder); 
    m_table_view->sortByColumn(logicalIndex); 
} 

Esta función no está recibiendo llamados, cuando se hace clic en su encabezado.

¿Puede por favor ayudarme a hacer esto, donde me equivoqué?

Gracias de antemano.

+0

Tema relacionado: http://stackoverflow.com/questions/24714130/qt-5-3-qtreeview-clickable-header-data – neuronet

Respuesta

7

Encontré el motivo por el que falló la conexión de la señal.

nombre de argumento no debe mencionarse en connect.

connect(m_horiz_header, SIGNAL(sectionClicked(int)), this, SLOT(on_sectionClicked(int))); 

modificando el código anterior como este, funcionó.

Cuestiones relacionadas