QTableWidget:只允许数字

QTableWidget: Only numbers permitted

本文关键字:数字 许数字 QTableWidget      更新时间:2023-10-16

是否有任何方法来禁止任何字符除了数字(0-9)在QTableWidget?对于qlineedit,我使用RegEx验证器,但这不适用于QTableWidgets。我想将qlineedit作为CellWidgets插入到表中,但随后我不得不在代码中重写大量的函数。那么,还有其他(直接)的方法吗?

我建议为表小部件使用项委托来处理可能的用户输入。下面是一个简化的解决方案。

项目委托的实现:

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();