2013-12-23 3 views
1

신호를 슬롯에 연결하려고합니다. 이 프로젝트는 잘 컴파일하지만 런타임에이 오류가 얻을 :Qt 슬롯이있을 때 "no such slot"을 연결하십시오.

QObject::connect(&m_proxyModel, SIGNAL(filterAdded(int)), &m_headerView, SLOT(onFilterAdded(int))); 
:

class MySortFilterProxyModel: public QSortFilterProxyModel 
{ 
Q_OBJECT 
public: 
    explicit MySortFilterProxyModel(QObject *parent = 0); 
    ~MySortFilterProxyModel(); 
    void addFilter(int col, SteFilter *pFilter); 
    void removeFilter(int col); 
signals: 
    void filterAdded(int); 
    void filterRemoved(int); 
} 

class MyHeaderView: public QHeaderView 
{ 
public: 
    MyHeaderView(); 
    void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const; 

public slots: 
    void onFilterAdded(int); 
    void onFilterRemoved(int); 

private: 
    QList<int> m_listFilters; 
}; 

내가 슬롯에 신호를 연결하는 코드 줄을 사용 : 여기

QObject::connect: No such slot QHeaderView::onFilterAdded(int) 

내 코드입니다

m_proxyModel은 MySortFilterProxyModel 유형이고 m_headerView는 MyHeaderView 유형입니다. 그들은 포인터가 아닙니다.

나는 이런 일이 발생하지 않습니다. 동일한 기술을 사용하여 다른 신호와 슬롯을 연결했는데 문제가 없었습니다. 어떤 도움을 주시면 감사하겠습니다.

+2

이것이 어떻게 중복되는지는 알 수 없습니다. 이는 일반적인 Q_OBJECT 문제를 해결하는 반면,이 질문은 Q_OBJECT와 관련된 특정 문제에만 적용됩니다. – lpapp

답변

3

클래스 MyHeaderView 당신이 그것을 추가하고 해당 한 후 프로젝트를 빌드 한 후 실행 qmake를하는 것을 잊지 마세요, Q_OBJECT 매크로가 없습니다.

+0

네, 고맙습니다! – Alex

관련 문제