【发布时间】:2014-09-19 22:58:29
【问题描述】:
Qt 5.3.0 & 5.3.1 Linux
我继承了 QSortFilterProxyModel 并实现了 lessThan()。 当有人单击 tableview 标题时(我已“连接”到) 我打电话给invalidate(),我看到它叫'lessThan',但表格视图从来没有 更新。有人能告诉我我错过了什么吗? lessThan() 绝对是 当我放置一些打印语句以查看内容时正确排序 当它被调用时发生在里面。我也试过添加 table->repaint() 什么都不做。
这是我的代码:
QTableView *table = m_ui->tableView;
table->resize(930, 200);
table->setAlternatingRowColors(true);
table->setSelectionMode(QAbstractItemView::SingleSelection);
table->setSelectionBehavior(QAbstractItemView::SelectRows);
table->verticalHeader()->hide();
QStringList header;
header << "ID";
header << "Prefix";
header << "First";
header << "M";
header << "Last";
int cols = header.size();
BookcaseModel *bookcaseModel = new BookcaseModel(this, cols, header);
m_proxy_bookcase = new SortFilterProxyModelBookcase(this);
m_proxy_bookcase->setSourceModel(bookcaseModel);
m_proxy_bookcase->sort(0, Qt::AscendingOrder);
m_proxy_bookcase->setDynamicSortFilter(true);
m_proxy_bookcase->setSortRole(Qt::DisplayRole);
table->setModel(bookcaseModel);
table->setSortingEnabled(true);
table->horizontalHeader()->setSortIndicator(0, Qt::AscendingOrder);
table->horizontalHeader()->setSectionsClickable(true);
connect(table->horizontalHeader(), SIGNAL(sectionClicked(int)),
this, SLOT(selectedColumnSlot(int)));
然后是槽:
void selectedColumnSlot(int col)
{
m_proxy_bookcase->sort(col, Qt::DescendingOrder);
m_proxy_bookcase->invalidate();
}
【问题讨论】:
标签: qt qtableview qsortfilterproxymodel