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