QTableWidget:仅允许数字

时间:2014-03-28 09:21:50

标签: c++ qt qtablewidget

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

1 个答案:

答案 0 :(得分:8)

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

项目委托的实施:

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