我正在创建一个 QTableWidget,显示我创建的结构中的一些信息。 但是,我似乎只能在表中显示字符串,而不能显示整数或 double 。
因此,作为解决方案,我将 double 和整数转换为字符串,它们在我的表格中显示完美。 但现在我无法正确使用排序函数,因为它按字母顺序对字符串进行排序,而我希望我的整数按值排序。
现在怎么样: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)));
}
谢谢!
最佳答案
您可以实现自己的 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);
关于c++ - Qt:QTableWidget 将整数添加到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20706819/