QTableWidget: разрешены только цифры
Есть ли способ запретить какие-либо символы, кроме чисел (0-9) в QTableWidget? Для QLineEdits я использую валидатор RegEx, но это не доступно для QTableWidgets. Я думал о вставке QLineEdits как CellWidgets в таблицу, но затем мне пришлось переписать чрезвычайно большое количество функций в моем коде. Итак, есть ли другой (прямой) способ сделать это?
1 ответ
Я бы предложил использовать делегат элемента для вашего виджета таблицы для обработки возможного пользовательского ввода. Ниже приведено упрощенное решение.
Реализация делегата пункта:
class Delegate : public QItemDelegate
{
public:
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem & option,
const QModelIndex & index) const
{
QLineEdit *lineEdit = new QLineEdit(parent);
// Set validator
QIntValidator *validator = new QIntValidator(0, 9, lineEdit);
lineEdit->setValidator(validator);
return lineEdit;
}
};
Реализация простого виджета таблицы с делегатом пользовательского элемента:
QTableWidget tw;
tw.setItemDelegate(new Delegate);
// Add table cells...
tw.show();