特定列上的QT QTreeView点击事件

时间:2016-08-01 00:01:59

标签: c++ qt treeview

我有一个简单的问题。我想根据单击的列拦截具有不同行为的树视图上的单击事件。我相信有一个信号通过模型索引......但是如何识别列?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

检查QTreeView中使用的QItemSelectionModel来处理行o列中的选择或单击事件。使您的树视图可选,并使用其中一个默认信号。您有3种不同的信号来处理点击事件:

void    currentChanged(const QModelIndex &current, const QModelIndex &previous)
void    currentColumnChanged(const QModelIndex &current, const QModelIndex &previous)
void    currentRowChanged(const QModelIndex &current, const QModelIndex &previous)

使用自定义插槽处理信号,并使用QModelIndex参数获取当前行和索引。例如:

void MainWindow::elementClicked(const QModelIndex& current, const QModelIndex& previous) {
     const int row =  current.row();
     const int column = current.column();
     qDebug() << "Clicked at " << row << column;
}