这是我倾向于设计的:当 tablewidget 发生变化时(比如它的行数),标签将显示行数。但是当我尝试它时,Qtcreator 说:
Object::connect: No such signal QTableWidget::rowCountChanged(int,int) in ..\ui\mainwindow.cpp:55
为什么?rowCountChanged(int, int) 是从 QTableView 继承的一个插槽,我认为...
谢谢
这是我倾向于设计的:当 tablewidget 发生变化时(比如它的行数),标签将显示行数。但是当我尝试它时,Qtcreator 说:
Object::connect: No such signal QTableWidget::rowCountChanged(int,int) in ..\ui\mainwindow.cpp:55
为什么?rowCountChanged(int, int) 是从 QTableView 继承的一个插槽,我认为...
谢谢
正如梅林所说,那是一个受保护的插槽。
但是您可以要求底层模型:
(因为小部件继承自继承自 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(...);
}
从 rowCountChanged 的定义可以看出:-
void QTableView::rowCountChanged(int oldCount, int newCount) [protected slot]
这是一个受保护的插槽,因此您看到“没有这样的信号”的错误是正确的。您可能需要做的是检查附加到 QTableView 的模型数据的变化。