当前位置: 代码迷 >> QT开发 >> QTableWidget怎么限制单元格的内容输入
  详细解决方案

QTableWidget怎么限制单元格的内容输入

热度:371   发布时间:2016-04-25 03:08:49.0
QTableWidget如何限制单元格的内容输入?

如图所示,我想要限制QTableWidget的单元格的输入,比如让用户号码的单元格只能输入0--9这10个数字,且最大只能输入3000,该如何设置呢?
------解决思路----------------------
给表格单元设置代理,比如使用QLineEdit,然后用QLineEdit的setValidator设置正则表达式进行校验。
------解决思路----------------------
引用:
Quote: 引用:

给表格单元设置代理,比如使用QLineEdit,然后用QLineEdit的setValidator设置正则表达式进行校验。

我会用QLineEdit的setValidator设置正则表达式,但如何跟表哥单元设置代理呢?

QTableWidget可以使用setItemWidget(...)进行设置;
QTableView可以使用setDelegate()进行设置。
这个你要看看模型-视图-代理这个概念了。
------解决思路----------------------
可以考虑用QReg试试
------解决思路----------------------
重载void QTableWidget::itemChanged ( QTableWidgetItem * item ) [signal],在这里面设置item的限制

------解决思路----------------------
主程序里:
 WordItemDelegate *wordItem=new WordItemDelegate;
ui->tableView->setItemDelegateForColumn(model->fieldIndex("showword"),wordItem);

.h
class WordItemDelegate : public QStyledItemDelegate
{
    Q_OBJECT
public:
    explicit WordItemDelegate(QObject *parent = 0);
  void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const;
signals:

public slots:

};

.cpp
void WordItemDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{

    return;
}
你可以在setModelData方法里用正则判断输入值
------解决思路----------------------
对了,我这个代理是用来限制修改的,表格可以进入编辑状态,但是不能修改
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

给表格单元设置代理,比如使用QLineEdit,然后用QLineEdit的setValidator设置正则表达式进行校验。

我会用QLineEdit的setValidator设置正则表达式,但如何跟表哥单元设置代理呢?

QTableWidget可以使用setItemWidget(...)进行设置;
QTableView可以使用setDelegate()进行设置。
这个你要看看模型-视图-代理这个概念了。


QTableWidget要使用setCellWidget吧。