qtableview如何才能一次选中一行和只编辑一行最后一列×××××

时间:2022-02-13 14:28:49
初学qt。直接在UI中拖了一个qtableview控件,列数为4。 
问题1: 
现在的情况是点击了一行,整行高亮,没问题,当我点击另一行时,这时就有2行高亮了,,请问如何只高亮当前选中行。 

问题2: 
在其属性的eidttriggers里设置selectedclicked就是没列都可以编辑。 
如何只让编辑选中行最后一列的值,谢谢大虾。 

以下为代码: 


model.setColumnCount(4); 
model.setRowCount(200); 


model.setHeaderData(0,Qt::Horizontal,QString::fromUtf8("卷烟名")); 
model.setHeaderData(1,Qt::Horizontal,QString::fromUtf8("批发价")); 
model.setHeaderData(2,Qt::Horizontal,QString::fromUtf8("需求量")); 
model.setHeaderData(3,Qt::Horizontal,QString::fromUtf8("订量")); 

for(int j=0;j<3;j++) 
{  
model.setItem(j, 0, new QStandardItem(QString::fromUtf8("黄鹤楼"))); 
model.setItem(j, 1, new QStandardItem("22")); 
model.setItem(j, 2, new QStandardItem("0")); 


ui.tableView->setModel(&model); 

ui.tableView->verticalHeader()->hide(); 

ui.tableView->setColumnWidth(0,129); 
ui.tableView->setColumnWidth(1,68); 
ui.tableView->setColumnWidth(2,68); 
ui.tableView->setColumnWidth(3,68); 

ui.tableView->setSelectionBehavior(QAbstractItemView::SelectRows);

4 个解决方案

#1


1、setSelectionMode(QAbstractItemView::SingleSelection);
2、可以在activated()事件后自己判断如果需要编辑则调用edit()函数。
editTriggers只使能了view的编辑开关,真正是否能编辑还是要看QModelIndex的flag属性。更好的做法是从QAbstractModel派生类来自己判断。

#2


setSelectionMode(QAbstractItemView::SingleSelection); 

#3


引用 1 楼 cuzn1024 的回复:
1、setSelectionMode(QAbstractItemView::SingleSelection);
2、可以在activated()事件后自己判断如果需要编辑则调用edit()函数。
editTriggers只使能了view的编辑开关,真正是否能编辑还是要看QModelIndex的flag属性。更好的做法是从QAbstractModel派生类来自己判断。

非常感谢楼上2位,,第一个问题解决了?
第二个问题能用代码举例下,谢谢,刚学,我不知道怎么操作?

#4


如果要直接某项的话, 要写实现一个Module, 实现里面的flags()方法, 针对特定项, 返回是否可编辑Qt::ItemIsEditable值

#1


1、setSelectionMode(QAbstractItemView::SingleSelection);
2、可以在activated()事件后自己判断如果需要编辑则调用edit()函数。
editTriggers只使能了view的编辑开关,真正是否能编辑还是要看QModelIndex的flag属性。更好的做法是从QAbstractModel派生类来自己判断。

#2


setSelectionMode(QAbstractItemView::SingleSelection); 

#3


引用 1 楼 cuzn1024 的回复:
1、setSelectionMode(QAbstractItemView::SingleSelection);
2、可以在activated()事件后自己判断如果需要编辑则调用edit()函数。
editTriggers只使能了view的编辑开关,真正是否能编辑还是要看QModelIndex的flag属性。更好的做法是从QAbstractModel派生类来自己判断。

非常感谢楼上2位,,第一个问题解决了?
第二个问题能用代码举例下,谢谢,刚学,我不知道怎么操作?

#4


如果要直接某项的话, 要写实现一个Module, 实现里面的flags()方法, 针对特定项, 返回是否可编辑Qt::ItemIsEditable值