我有一个表格,我在其中将数字(作为字符串)放在一列中。由于某种原因,似乎具有2个或更多个周期(即5.5.5)的数字将在单元格的左侧对齐,而具有较少周期的数字(即55.5)将在单元格的右侧对齐。有谁知道如何改变这个?
答案 0 :(得分:0)
据我所知,用于千位分隔符和小数点的字符在区域设置之间可能会有所不同,但当然没有区域设置可以将5.5.5
理解为数字?鉴于此,Qt想将其视为普通文本并不奇怪。
但无论如何,QTableItem的文档建议您可以通过重新实现alignment函数来解决这个问题:
class TableItem(QTableItem):
def alignment(self):
if is_pseudo_number(self.text()):
return Qt.AlignRight
return QTableItem.alignment(self)
...
table.setItem(row, column, TableItem('5.5.5'))
is_pseudo_number()
的实施留给读者练习......
(PS:因为你使用的是PyQt3,上面的代码是完全未经测试的)
答案 1 :(得分:0)
我有类似的问题。我的解决方案略有不同。 将每个项目填入表格时,请检查它是否符合“5.5.5”格式,并将项目设置为右对齐。
cell = QTableWidgetItem(value)
tableWidget.setItem(row, col, cell)
# check the value matches your requirement, via regex or as below
check = value.replace('.', '')
if check.isdigit():
tableWidget.item(row, col).setTextAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignVCenter)