2009-11-05 128 views
1

我有一个QTableWidget四列。我希望用户只能在前三个中插入整数,在第四个中插入一个双精度。QTableWidget,只允许键入数字

我相信这可以通过委托完成,但我还没有找到相关示例(只有一些与QDateTimeEdit)。

我该怎么办?

回答

3

查看QItemDelegate的文档;它对如何使用它提供了很好的描述。

由于使用委托,您将能够提供自己的自定义编辑器,我建议您使用QLineEdit并使用验证器集使用setValidator()。我相信在这种情况下,QIntValidatorQDoubleValidator将是完美的。

+0

谢谢。只有一个问题:如何设置列的验证器?我为QLineEdit做过,但从来没有列。 – Giuseppe

+0

验证器设置在编辑器'QLineEdit'上。由于委托处理为单元格创建编辑器,因此可以为不同的列设置不同的委托 - 只需使用'QAbstractItemView :: setItemDelegateForColumn()'。 – swongu

+1

我会建议代替编辑器使用旋转框和双旋转框的可能性。它们仍然可以输入,已经有验证器,并且允许用户快速增加/减少值。 –