void QTableView::selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected ) [virtual protected]
这个函数是当选择改变时候自动执行的槽函数,为什么我在qcreator里点击qtableview里点击鼠标转到槽没有这个函数?如何使用这个槽函数?
我希望实现的是当qtableview被选中的条目发生变化时(可能是直接点击qtableview中的条目,也可能是通过上下按钮更改选中条目)执行一些操作,但是不知道如何使用这个槽函数,哪位能指点下吗?
下面是qtcreator里的帮助文档,虚函数,保护,重载。。。由于对c++不是很熟悉,一时有点蒙圈。。。高手指点下吧
void QTableView::selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected ) [virtual protected]
Reimplemented from QAbstractItemView::selectionChanged().
下面:
void QAbstractItemView::selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected ) [virtual protected slot]
This slot is called when the selection is changed. The previous selection (which may be empty), is specified by deselected, and the new selection by selected.
------解决思路----------------------
这是保护类型的虚函数,你是不能直接使用的,你得自己新建一个类MyXXXTableView类继承QTableView,然后重载这个虚函数复写或添加功能,若你想外部调用,重写时,就把这个函数变为public。
但是……
一般是不会用到这个函数的
你要选择改变,你要找的不是槽,而是要找到信号
选择改变的信号是在view视图的内置模型QItemSelectionModel里,
你需要的是
void QItemSelectionModel ::selectionChanged(const QItemSelection & selected, const QItemSelection & deselected)
这个信号
代码应该是(未验证):
QItemSelectionModel * sm = ui->xxxView->selectionModel();
if(sm )
{
connect(sm,&QItemSelectionModel::selectionChanged,this,&mainWindow::onSelectionChanged);
}
onSelectionChanged是你自己写的槽函数,形式是
void onSelectionChanged(const QItemSelection & selected, const QItemSelection & deselected);