Qt:QTableWidget将整数添加到表中

时间:2013-12-20 15:23:50

标签: c++ qt sorting qtablewidget

我正在创建一个QTableWidget,从我创建的Structure中显示一些信息。 但是,我似乎只能在表中显示字符串,而不是整数或双精度。

作为一个解决方案,我将我的双打和整数转换为Strings,它们在我的桌子中显示完美。 但是现在我无法正确使用sortfunction,因为它按字母顺序对字符串进行排序,我希望我的整数按值排序。

现在如何:15 16 2 33 4 66 8 它应该如何:2 4 8 15 16 33 66

基本上,我正在寻找一种向QTableView添加整数的方法。 有什么想法吗?

这是我目前的代码:

ui->tableWidget->setRowCount(lijst.size());
ui->tableWidget->setColumnCount(4);
ui->tableWidget->setColumnWidth(0,200);
QStringList TableHeader;
TableHeader<<"Object"<<"Frames"<<"Views"<<"Percent";
ui->tableWidget->setHorizontalHeaderLabels(TableHeader);

for(int i = 0; i< lijst.size();i++)
{
    ui->tableWidget->setItem(i, 0, new QTableWidgetItem(lijst[i].name));
    ui->tableWidget->setItem(i, 1, new QTableWidgetItem(tr("%1").arg(lijst[i].nroFrames));
    ui->tableWidget->setItem(i, 2, new QTableWidgetItem(tr("%1").arg(lijst[i].nroViews)));
    ui->tableWidget->setItem(i, 3, new QTableWidgetItem(tr("%1").arg(lijst[i].percent)));
}

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以实现自己的QTableWidget项目,该项目将以特殊方式处理比较。例如:

class TableItem : public QTableWidgetItem
{
public:
    TableItem(const QString & text)
        :
            QTableWidgetItem(text)
    {}

    TableItem(int num)
        :
            QTableWidgetItem(QString::number(num))
    {}

    bool operator< (const QTableWidgetItem &other) const
    {
        if (other.column() == 1) {
            // Compare cell data as integers for the second column.
            return text().toInt() < other.text().toInt();
        }
        return other.text() < text();
    }
};

有了这个,您只需创建TableItem而不是QTableWidgetItem

ui->tableWidget->setItem(i, 1, new TableItem(tr("%1").arg(lijst[i].nroFrames));

ui->tableWidget->setItem(i, 1, new TableItem(lijst[i].nroFrames);

答案 1 :(得分:1)

另一个选择(我认为更容易)是创建一个空的QTableWidgetItem,然后设置数据:

(Get-ChildItem -Path $dir -filter *.bak| Sort-Object LastWriteTime -Descending)[0]

答案 2 :(得分:1)

请不要使用QTablewidgetItem或QTableWidget,而是使用QTableView和QAbstractTableModel - 维护成本更小,代码更健全。

班级:

  • YourTableView - 原始数据
  • YourSortModel - 将进行排序/过滤的模型
  • QTableView - 将显示您的stff。

很难在Qt上的模型视图中启动,但是一旦你理解了基础知识,你就不会再回到手动调用小部件了。