QTableWidget的列文本格式如何设置?

Posted

技术标签:

【中文标题】QTableWidget的列文本格式如何设置?【英文标题】:How to set the column text format of QTableWidget? 【发布时间】:2014-12-07 13:27:21 【问题描述】:

我想以表格形式显示一些数据。我选择了QTableWidget,因为它有多个列。其中一列将包含 time(hh:mm 格式)

我还希望用户编辑表格的任何项目,但具有相应的格式。

我可以在QTableWidget 中添加数据,但我无法设置时间 列的文本格式。

这是我想要实现的,以便用户只能以 hh:mm 格式编辑时间。

如果可能,请用 python 编写你的答案代码。

【问题讨论】:

你在使用QDateTimeEdit吗?如果是这样,只需设置显示格式。 @lpapp 实际上,我在此表之前添加了QDateTimeEdit,用户设置时间并添加到QTableWidget,但在此表中我希望允许用户编辑此时间数据 但格式相同QDateTimeEdit @lpapp 我必须以表格形式维护数据列表。数据包括姓名、时间、日期、温度等。用户将使用相应的小部件配置这些小部件,然后单击按钮将这些小部件添加到表中。他可以添加多个数据 @lpapp 两个 cmets 都传达相同的内容。在第一条评论中,我只谈到了时间小部件,在第二条评论中,我告诉了你数据的所有内容 【参考方案1】:

由于您希望用户输入时间日期,我建议通过以下方式重用已经存在的QDateTimeEdit 类:

dateTime = QDateTimeEdit();
dateTime.setDisplayFormat("hh:mm");
dateTime.setFrame(False);
myTableWidget.setCellWidget(row, column, dateTime);

用户将能够以这种方式在您的表格小部件中编辑“时间数据”。此外,由于可以应用的步骤,它也会很方便。

如果您真的坚持自己重新发明它,您可以使用带有自定义验证器的 QLineEdit 来重新设置所需的 hh::mm 格式。

dateTime = QLineEdit();
dateTime.setValidator(QRegExpValidator(QRegExp("^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$")));
myTableWidget.setCellWidget(row, column, dateTime);

【讨论】:

只是为了告诉你我想在QTW而不是date time。错误地我在评论中写了 QDTE 第一个代码运行良好,但第二个代码出错:dateTime.setValidator(QRegExpValidator("^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$")) TypeError: 'PySide.QtGui.QRegExpValidator' called with wrong argument types: PySide.QtGui.QRegExpValidator(str) @Patrick:尝试 QRegExpValidator(QRegExp("...")) 因为他们明确了 QRegExp ctor。

以上是关于QTableWidget的列文本格式如何设置?的主要内容,如果未能解决你的问题,请参考以下文章

Qt 中 QTableView 中如何设置某一单元格文本的颜色值,希望能贴出代码。

Qt如何按比例分配QTableView的列宽并且充满整个控件

调整 QTableWidget 中的列大小

如何将文本与QTableWidget中的单元格中心对齐

QT如何设置QTableWidget控件占满下方?

QTableWidget 和 PyQt4 中的列宽