问题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、可以在activated()事件后自己判断如果需要编辑则调用edit()函数。
editTriggers只使能了view的编辑开关,真正是否能编辑还是要看QModelIndex的flag属性。更好的做法是从QAbstractModel派生类来自己判断。
#2
setSelectionMode(QAbstractItemView::SingleSelection);
#3
非常感谢楼上2位,,第一个问题解决了?
第二个问题能用代码举例下,谢谢,刚学,我不知道怎么操作?
#4
如果要直接某项的话, 要写实现一个Module, 实现里面的flags()方法, 针对特定项, 返回是否可编辑Qt::ItemIsEditable值
#1
1、setSelectionMode(QAbstractItemView::SingleSelection);
2、可以在activated()事件后自己判断如果需要编辑则调用edit()函数。
editTriggers只使能了view的编辑开关,真正是否能编辑还是要看QModelIndex的flag属性。更好的做法是从QAbstractModel派生类来自己判断。
2、可以在activated()事件后自己判断如果需要编辑则调用edit()函数。
editTriggers只使能了view的编辑开关,真正是否能编辑还是要看QModelIndex的flag属性。更好的做法是从QAbstractModel派生类来自己判断。
#2
setSelectionMode(QAbstractItemView::SingleSelection);
#3
非常感谢楼上2位,,第一个问题解决了?
第二个问题能用代码举例下,谢谢,刚学,我不知道怎么操作?
#4
如果要直接某项的话, 要写实现一个Module, 实现里面的flags()方法, 针对特定项, 返回是否可编辑Qt::ItemIsEditable值