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 中如何设置某一单元格文本的颜色值,希望能贴出代码。