csdn一大片都是
ui->tableWidget->item(num,0)->setFlags(Qt::NoItemFlags);
这明显是某行某列,要一增列还要搞个for循环,一个字,挫!
这是解决方案,使用delegate委托,适用于tableview:
http://labisart.com/blog/index.php/Home/Index/article/aid/204
void
QTableWidget
Item::setFlags(
Qt
::ItemFlags flags)
Sets the flags for the item to the given flags. These determine whether the item can be selected or modified.
See also flags(
设置
Qtablewidget
第一
列
不可
编辑
,第二
列
不可
编辑
。试了很多方式才实现,记录一下,以免忘记
def InsertTableWidget(self,column1,column2):
rowcount = self.tablewidget.rowCount()
self.tablewidget.insertRow(rowcount)
今天写代码踩坑,发现
QTableWidget
Item中
设置
item的属性的setflags如果
设置
Qt
::`ItemIsEnabled,必须
设置
Qt
::ItemIsEnabled|
Qt
::ItemIsEnabled才可以
编辑
。
在网上找了半天,都是说
qtableview
设置
某一
列
不可
编辑
的。我TMD,而且还是使用委托,委托有一个问题就是,当你的行数很多,几万甚至上百万。那么你的界面就会卡死。
后来翻墙上国外网站,找到了这个方法,
注意,这里使用过的是自定义model,然后将这个方法放在自定义model的头文件中
Qt
::ItemFlags flags(const QModelIndex& index) const {
if (index.column() < 3)
return
Qt
::ItemIsEnab
之前工作中,需要将
QTableView
的某一
列
或者某一行
设置
为
不可
编辑
状态。看其他的博主大多是使用for循环,或者自定义委托。因为我的表格有很多
列
和行,不太适合for循环,
设置
自定义委托感觉不错,但是又不想额外添加代码的复杂度。后来发现一个很简单的方法可以实现
不可
编辑
。
QTableWidget
Item *item0= new
QTableWidget
Item(tr("%1").arg(devTopoInfo->id));
item0->setFla...
2、
设置
某行或者
某列
不可
编辑
,其他行
列
可
编辑
1)继承类QStyledItemDelegate,重写函数createEditor,让其返回空,(单元格较多时推荐使用)
QWidget* ReadOnlyItemDelegate::createEditor(QWidget* parent, const QStyleOpti
一、常规流程
Qt
中表格控件,常用的有
QTableView
和
QTableWidget
,为什么选择使用
QTableView
呢?因为
QTableView
支持MVC模式(模型-视图框架)。
QTableView
* m_pTable = new
QTableView
;
QStandardModel* m_pTable_Model = new QStandardModel;
m_pTable->setModel(m_pTable_Model);
二、功能记录
1、
设置
表头
QStringList qstrL
1.显示格子 table->setShowGrid(false);
2.由内容调整
列
table->resizeColumnsToContents();
3.获取垂直表头 table->verticalHeader();
//准备数据模型
QStandardItemModel *student_model = new QStandardItemModel();
student_model->setHorizontalHeaderItem(0, new QStandardItem(QObj