我正在创建一个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)));
}
谢谢!
答案 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 - 维护成本更小,代码更健全。
班级:
很难在Qt上的模型视图中启动,但是一旦你理解了基础知识,你就不会再回到手动调用小部件了。