【发布时间】:2014-09-19 20:17:28
【问题描述】:
我遇到了 Qt 信号和插槽的问题。我只是在学习 Qt,但我有很多 C++ 经验。我从 QTreeView 派生了一个类,我想处理 columnResized 信号。该插槽从未被调用,我在“应用程序输出”中看到了这一点:
QObject::connect: No such signal TRecListingView::columnResized(int,int,int) in ../ec5/reclistingwidget.cpp:142
类声明如下所示:
class TRecListingView : public QTreeView
{
Q_OBJECT
public:
TRecListingView(QWidget *parent, TTopicPtr topic);
~TRecListingView();
private slots:
void onColumnResized(int index, int oldsize, int newsize);
private:
TRecListingModel *Model = 0;
};
在构造函数中我这样做:
connect(this,SIGNAL(columnResized(int,int,int)),
this,SLOT(onColumnResized(int,int,int)));
在实现派生类之前,我早先已经完成了这项工作。然后我将信号映射到父小部件中的插槽。
我已经尝试运行 qmake 并重建项目。我也试过这个:
QTreeView *tv = this;
connect(tv,SIGNAL(columnResized(int,int,int)),
this,SLOT(onColumnResized(int,int,int)));
【问题讨论】: