3

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

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

谢谢

4

2 回答 2

3

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

但是您可以要求底层模型:

(因为小部件继承自继承自 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]

在这里你得到了所有的模型信号

事实上,我还有另一种方法可以探索:

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

因此,创建自己的信号:

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

}
于 2013-07-23T16:00:34.593 回答
1

从 rowCountChanged 的​​定义可以看出:-

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

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

于 2013-07-23T15:42:13.513 回答