Qt Qtableview not getting signal for header item clicking
I got the reason why the signal connection failed.
argument name should not be mentioned on connect.
connect(m_horiz_header, SIGNAL(sectionClicked(int)), this, SLOT(on_sectionClicked(int)));
by modifiying the above code like this, it worked.
rafeequenk
Updated on June 16, 2022Comments
-
rafeequenk about 2 years
I am using
Qtableview
withQsqlTableModel
for populating a table data. I want to sort the column based on user selection on column header.I tried the way mentioned in QTableView sorting signal? for getting the signal (get the horizontal header from
QtableView
and connect signalsectionclicked(int logical index)
. But the same signal is not getting emitted when i click on column header.Please find the code where connection is done:
Member variable:
QHeaderView *m_horiz_header;
.cpp file
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 ) ));
Slot function for sorting:
void class::on_sectionClicked ( int logicalIndex ) { m_horiz_header->setSortIndicator(logicalIndex, Qt::AscendingOrder); m_table_view->sortByColumn(logicalIndex); }
This function is not getting called, when column header is clicked.
Can you please help me how to do this, where I went wrong?