qtableview 设置某列输入 正则表达式
时间: 2023-05-21 15:02:53 浏览: 145
使用pyqt5 tablewidget 单元格设置正则表达式
可以使用 QItemDelegate 类来实现这个功能。具体步骤如下:
1. 创建一个自定义的 QItemDelegate 类,并重写 createEditor() 方法和 setEditorData() 方法。
2. 在 createEditor() 方法中创建一个 QLineEdit 控件,并设置它的正则表达式。
3. 在 setEditorData() 方法中将模型中的数据设置到 QLineEdit 控件中。
4. 在 QTableView 中设置该列的委托为自定义的 QItemDelegate 类。
下面是一个示例代码:
```
class RegexDelegate : public QItemDelegate
{
public:
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
{
QLineEdit *editor = new QLineEdit(parent);
QRegExp regex("\\d+"); // 设置正则表达式
editor->setValidator(new QRegExpValidator(regex, editor));
return editor;
}
void setEditorData(QWidget *editor, const QModelIndex &index) const override
{
QString value = index.model()->data(index, Qt::EditRole).toString();
QLineEdit *lineEdit = static_cast<QLineEdit*>(editor);
lineEdit->setText(value);
}
};
// 在 QTableView 中设置委托
QTableView *tableView = new QTableView;
RegexDelegate *delegate = new RegexDelegate;
tableView->setItemDelegateForColumn(1, delegate); // 设置第 1 列的委托
```
这样,第 1 列的单元格就可以输入数字了。
阅读全文