У меня проблема с сигналами и слотами Qt. Я просто изучаю Qt, но у меня много опыта на C++. Я получил класс из QTreeView, и я хочу обработать сигнал с разрешением столбца. Слот никогда не вызывается, и я вижу это в «Output Application»:Сопоставление сигнала базового класса 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 не имеет горизонтальногоHeader(), просто заголовок(). Поэтому я получил работу с этим: connect (this-> header(), SIGNAL (sectionResized (int, int, int)), это, SLOT (onColumnResized (int, int, int))); – nicktook