我使用Qtableview与QsqlTableModel用于填充表的数据.我想根据列标题上的用户选择对列进行排序.
我试过QTableView排序信号中提到的方式?获取信号(获取水平标头QtableView并连接信号sectionclicked(int logical index).但是当我点击列标题时,相同的信号不会被发出.
请找到连接完成的代码:
成员变量:
QHeaderView *m_horiz_header;
Run Code Online (Sandbox Code Playgroud)
.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 ) ));
Run Code Online (Sandbox Code Playgroud)
用于排序的插槽功能:
void class::on_sectionClicked ( int logicalIndex )
{
m_horiz_header->setSortIndicator(logicalIndex, Qt::AscendingOrder);
m_table_view->sortByColumn(logicalIndex);
}
Run Code Online (Sandbox Code Playgroud)
单击列标题时,不会调用此函数.
在我出错的地方,你能帮助我怎么做吗?
我明白了信号连接失败的原因.
连接时不应提及参数名称.
connect(m_horiz_header, SIGNAL(sectionClicked(int)), this, SLOT(on_sectionClicked(int)));
Run Code Online (Sandbox Code Playgroud)
通过像这样修改上面的代码,它起作用了.
| 归档时间: |
|
| 查看次数: |
9989 次 |
| 最近记录: |