2009-11-05 498 views
1

我有一個QTableWidget四列。我希望用戶只能在前三個中插入整數,在第四個中插入一個雙精度。QTableWidget,只允許鍵入數字

我相信這可以通過委託完成,但我還沒有找到相關示例(只有一些與QDateTimeEdit)。

我該怎麼辦?

回答

3

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

由於使用委託,您將能夠提供自己的自定義編輯器,我建議您使用QLineEdit並使用驗證器集使用setValidator()。我相信在這種情況下,QIntValidatorQDoubleValidator將是完美的。

+0

謝謝。只有一個問題:如何設置列的驗證器?我爲QLineEdit做過,但從來沒有列。 – Giuseppe

+0

驗證器設置在編輯器'QLineEdit'上。由於委託處理爲單元格創建編輯器,因此可以爲不同的列設置不同的委託 - 只需使用'QAbstractItemView :: setItemDelegateForColumn()'。 – swongu

+1

我會建議代替編輯器使用旋轉框和雙旋轉框的可能性。它們仍然可以輸入,已經有驗證器,並且允許用戶快速增加/減少值。 –