QTableWidget:只允许数字

Posted

技术标签:

【中文标题】QTableWidget:只允许数字【英文标题】:QTableWidget: Only numbers permitted 【发布时间】:2014-03-28 09:21:49 【问题描述】:

有什么方法可以在 QTableWidget 中禁止除数字 (0-9) 之外的任何字符?对于 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();

【讨论】:

以上是关于QTableWidget:只允许数字的主要内容,如果未能解决你的问题,请参考以下文章

如何只允许在 QTableWidget 中多次选择某些项目?

QTableWidget 并生成英文数字作为数字行

如何将 QTableWidget 设置为仅允许按标题选择?

对 QTableWidget 中的数字列进行排序

是否可以在 QTableWidget 中只选择一项

QTableWidget 中的 InputMask