2014-06-11 86 views
0

我在开发自定义QTableWidget小部件的方式。所有进展良好..直到我进入多列分类。我们可以在QTableWidget中做到这一点吗?或者我必须从QTableView继承,并且必须重写我的自定义小部件?我们可以使用QTableWidget对多列进行排序吗?或者我必须从QTableView继承?

我在看this code actually,但有锯(和测试)这行代码:

for (int i=sortOrder.size() - 1; i>=0; --i) { 
      sortItems(sortOrder.at(i).column, sortOrder.at(i).ascending ? Qt::AscendingOrder : Qt::DescendingOrder); 

我意识到,这是行不通的。在使用sortItems进行排序并在其他列中重新运行之后,您将得到的是最后一列的排序。

有什么建议吗? 我希望继续使用QTableWidget;)

回答

0

您不需要继承QTableWidget以使其可排序。要启用排序功能,您必须使用QTableView::setSortingEnabled()函数来打开内置的排序功能。例如:

tableWidget->setSortingEnabled(true); 
+0

它只适用于单列排序。对于多列,它只提供'sortByColumn(column)'或'sortItems(column,sort_order)'。我期待'sortItems()'可以用来对多列进行排序,但它不是 – swdev

+0

@swdev,你是说什么“排序多列”?我不知道这样的能力。我可以排序的唯一方法是单击标题视图并对**对应列进行排序。此外,'QTreeWidget :: sortItems()'接受一个列号,而不是列的列表作为第一个参数。 – vahancho

+0

是的,它确实不支持它。我想我会被迫将我当前的自定义小部件重新分类到QTableView .. gosh ..我希望它没有我认为的那么糟糕.. :) http://qt-project.org/forums/ viewthread/1349 – swdev

相关问题