我遇到了Qt信號和插槽的問題。我只是在學習Qt,但我有很多C++經驗。我從QTreeView派生了一個類,我想處理columnResized信號。插槽是永遠不會被調用,我看到了這個在「應用程序輸出」:將Qt基類信號映射到派生類中的插槽
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)));
QTableView沒有horizontalHeader(),只是一個頭()。所以我得到了這個工作:connect(this-> header(),SIGNAL(sectionResized(int,int,int)), this,SLOT(onColumnResized(int,int,int))); – nicktook 2014-09-22 13:21:35