我有一个QTableView,它表示由行和几列组成的模型,例如x,y,z等坐标。行是整个元素,我希望每次用户选择一个选择时触发一个信号。我设想一些图形对象根据所选行而改变。
我目前的尝试是做类似
的事情ui.tlbView->setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection);
ui.tlbView->setSelectionBehavior(QAbstractItemView::SelectionBehavior::SelectRows);
connect(ui.tlbView,&QTableView::clicked ,this,&FancyWidget::rowSelected);
这有时会起作用,但有时会失败。例如,选择更改时,单击垂直标题不会注册。这很糟糕,因为我希望每次选择更改时都会触发一个信号。
这让我觉得抓住点击的信号是一个黑客,并且假设小部件正确识别它被选中,即使我没有调用我的点击信号。我试图找出如何匹配小部件的选择状态1:1。
答案 0 :(得分:2)
要获得选择更改的通知,请查看QItemSelectionModel。 您可以通过selectionModel()访问的表格视图的选择模型。在您的情况下,QItemSelectionModel::selectionChanged()应该是您所需要的。
connect(ui.tlbView->selectionModel(), &QItemSelectionModel::selectionChanged,
this, &FancyWidget::selectionChanged);