Qt 设置QTableView的某列或某行只读
我的做法是实现一个委托(delegate),然后把它设给你要只读的列或行
class ReadOnlyDelegate: public QItemDelegate
{public:ReadOnlyDelegate(QWidget *parent = NULL):QItemDelegate(parent){}QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index) const override //final{Q_UNUSED(parent)Q_UNUSED(option)Q_UNUSED(index)return NULL;}
};
就是不返回任何editor。
然后去设置TableView对象的属性如下:
ReadOnlyDelegate* readOnlyDelegate = new ReadOnlyDelegate();
ui->tableView->setItemDelegateForColumn(2, readOnlyDelegate); //设置某列只读
ui->tableView->setItemDelegateForRow(0, readOnlyDelegate); //设置某行只读```
如果要将整个TableView设为只读模式,则只需下面一句即可:
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);