用户选择行时的Paradimatic信号

时间:2014-01-22 04:03:21

标签: c++ qt qt5

我有一个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。

1 个答案:

答案 0 :(得分:2)

要获得选择更改的通知,请查看QItemSelectionModel。 您可以通过selectionModel()访问的表格视图的选择模型。在您的情况下,QItemSelectionModel::selectionChanged()应该是您所需要的。

connect(ui.tlbView->selectionModel(), &QItemSelectionModel::selectionChanged, 
        this, &FancyWidget::selectionChanged);