QTableWidget 中的自定义排序

kap*_*ani 3 qt qtablewidget

我有一个 QTableWidget,我通过标题列使用它的默认排序功能,但 QTableWidget 中的一列是整数类型,并且通过 QTableWidget 默认排序,它像字符串一样排序。所以有任何方法可以使用我自己的方法QTableWidget 的排序功能?

vah*_*cho 5

您可以尝试子类化 QTableWidgetItem 并重新实现它的operator<()。比在您的 QTableWidget 中使用此自定义项而不是默认的 QTableWidgetItems。像这样的东西:

class Item: public QTableWidgetItem
{

 public:
     [..]
     bool operator< (const QTableWidgetItem &other) const
     {
         // TODO: To be safe, check weather conversion to int is possible.
         return (this->text().toInt() < other.text().toInt());
     }
     [..]
 };
Run Code Online (Sandbox Code Playgroud)

在你的表格小部件中:

[..]
QTableWidgetItem *newItem = new Item("1");
tableWidget->setItem(row, column, newItem);
[..]
Run Code Online (Sandbox Code Playgroud)

  • 我的错。我重写了这个: bool operator&lt; ( const MyTableWidgetItem&amp; rhs ) const; ,当我应该覆盖这个: bool operator&lt; ( const QTableWidgetItem&amp; rhs ) const; 。我的错。 (2认同)