QTableWidget:仅允许数字

Kra*_*oid 2 c++ qt qtablewidget

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

vah*_*cho 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;
    }
};
Run Code Online (Sandbox Code Playgroud)

使用自定义项委托实现简单表窗口小部件:

QTableWidget tw;
tw.setItemDelegate(new Delegate);
// Add table cells...
tw.show();
Run Code Online (Sandbox Code Playgroud)