我正在使用Qtableview
和QsqlTableModel
来填充表格数据。我想根据列标题上的用户选择对列进行排序。
我尝试了QTableView sorting signal?中提到的方式获取信号(从QtableView
获取水平标头并连接信号sectionclicked(int logical index)
。但是当我点击时,相同的信号不会被发出列标题。
请找到连接完成的代码:
会员变量:
QHeaderView *m_horiz_header;
.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 ) ));
用于排序的插槽功能:
void class::on_sectionClicked ( int logicalIndex )
{
m_horiz_header->setSortIndicator(logicalIndex, Qt::AscendingOrder);
m_table_view->sortByColumn(logicalIndex);
}
单击列标题时,不会调用此函数。
如果我出错了,你可以帮我解决一下这个问题吗?
答案 0 :(得分:8)
我明白了信号连接失败的原因。
连接时不应提及参数名称。
connect(m_horiz_header, SIGNAL(sectionClicked(int)), this, SLOT(on_sectionClicked(int)));
通过像这样修改上面的代码,它起作用了。