如何将rowCountChanged连接到插槽

时间:2013-07-23 15:26:29

标签: qt qtablewidget

这是我倾向于设计的:    当tablewidget发生变化时(比如它的rowcount),    标签将显示rowcount。但是当我尝试它时,Qtcreator说:   Object::connect: No such signal QTableWidget::rowCountChanged(int,int) in ..\ui\mainwindow.cpp:55

为什么呢? rowCountChanged(int,int)是从QTableView继承的一个插槽,我认为......

由于

2 个答案:

答案 0 :(得分:2)

正如梅林所说,那是一个受保护的插槽。

但你可以要求基础模型:

(因为widget继承自继承自AbstractView的tableView)

QAbstractItemModel * QAbstractItemView::model () const

连接模型信号:

void QAbstractItemModel::rowsInserted ( const QModelIndex & parent, int start, int end ) [signal]
void QAbstractItemModel::rowsRemoved ( const QModelIndex & parent, int start, int end ) [signal]

Here你得到了所有模型信号

事实上,我还有另一种探索方式:

对QTableWidget进行子类化,(公共)您可以访问该受保护的插槽。

所以,创建自己的信号:

void YourTableWidget::rowCountChanged(int,int)
{
QTableWidget::rowCountChanged(int,int);
emit your_signal(...);

}

答案 1 :(得分:1)

从rowCountChanged的定义可以看出: -

void QTableView::rowCountChanged(int oldCount, int newCount) [protected slot]

这是受保护的插槽,因此您看到的“没有此类信号”的错误是正确的。您可能需要做的是检查附加到QTableView的模型数据的更改。