我的做法是实现一个委托(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);
这篇博客介绍了如何在Qt环境中通过创建一个委托类ReadOnlyDelegate来实现QTableView的只读功能。作者详细展示了如何重写createEditor方法以防止编辑器的创建,并提供了设置特定列或行只读的代码示例。此外,还给出了将整个表格设为只读模式的简单方法。
2835

被折叠的 条评论
为什么被折叠?



