New*_*oon 6 c++ qt delegates qtableview qt4.7
我有一个QTableView4行和4列,每列代表它们的数据.默认情况下,它QTableView是可编辑的.现在我想让任何特定的列在我的文件中不可编辑QTableView.
我该怎么做?
提前致谢.
Sin*_*all 10
你可以使用这个setItemDelegateForColumn()功能.实现只读委托,并为您需要的列设置它.
您也可以使用该标志的模型中,并删除Qt::ItemIsEditable标志的特定列.
这样的事情也可以这样做:
class NotEditableDelegate : public QItemDelegate
{
Q_OBJECT
public:
explicit NotEditableDelegate(QObject *parent = 0)
: QItemDelegate(parent)
{}
protected:
bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index)
{ return false; }
QWidget* createEditor(QWidget *, const QStyleOptionViewItem &, const QModelIndex &) const
{ return Q_NULLPTR; }
};
Run Code Online (Sandbox Code Playgroud)
正在使用:
// Make all the columns except the second read only
for(int c = 0; c < view->model()->columnCount(); c++)
{
if(c != 1)
view->setItemDelegateForColumn(c, new NotEditableDelegate(view));
}
Run Code Online (Sandbox Code Playgroud)
最简单的方法是设置您不想以这种方式编辑的项目的标志:
item->setFlags(item->flags() & ~Qt::ItemIsEditable);
Run Code Online (Sandbox Code Playgroud)
您还可以检查此线程:Qt How to make a columns in QTableWidget read only
| 归档时间: |
|
| 查看次数: |
8346 次 |
| 最近记录: |