【发布时间】:2015-01-16 11:26:49
【问题描述】:
在我的应用程序中,我有两个视图,一个是显示程序集树的 QTreeView。装配体可以将其他装配体和零件作为子装配体和零件。另一个视图是 QTableView 中的部件列表。
我想要做的是:当在装配树中选择了一个 prt(部件没有子级)时,我希望在部件表视图中突出显示该部件。
这就是我目前所拥有的......在树视图的点击处理程序中,我得到了 ItemModel,然后是部件号。
QAbstractItemModel *model = asmview->model();
QString partno = model-> index(index.row(), 0, index.parent()).data(Qt::DisplayRole).toString();
bool hasch = model->hasChildren(index);
if (hasch){
qDebug() << "has children" ;
} else {
qDebug() << "has no children" ;
// go find the partnumber in the other grid
int idx;
idx = partsview->getItemNoForPartNo(partno);
该函数只是遍历零件列表,直到找到正确的零件,然后返回索引,如果没有找到则返回 -1。
这就是我卡住的地方。我还没有找到一种方法来设置零件表视图的当前索引/选择而不会出现编译错误。例如,这些不编译:
if (idx >= 0){
// partsview->setCurrentIndex(idx);
partsview->selectionModel()->setCurrentIndex(idx);
这应该怎么做?
【问题讨论】:
-
也许尝试使用
QItemSelectionModel::select()函数代替?它将选择/取消选择您视图的项目。 -
@vahancho 我会再看一下 - 我确实尝试过,但我正在努力从整数创建 QModelIndex。 (你能告诉我我是 Qt 的新手吗 :))
-
您不能从任意整数创建模型索引。只有知道行号和列号才能这样做。在这种情况下,您需要使用 QAbstractItemModel::index() 函数。
标签: qt