2013-12-23 125 views
1

我試圖將信號連接到插槽。該項目編譯正常,但在運行時我得到這個錯誤:當插槽存在時Qt連接「沒有這樣的插槽」

QObject::connect: No such slot QHeaderView::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(&m_proxyModel, SIGNAL(filterAdded(int)), &m_headerView, SLOT(onFilterAdded(int))); 

m_proxyModel是MySortFilterProxyModel類型,m_headerView是MyHeaderView類型。他們不是指針。

我不明白爲什麼會發生這種情況。我使用相同的技術連接了其他信號和插槽,並且沒有問題。任何幫助將不勝感激,謝謝。

+2

我不明白這是如何重複的。這解決了一般Q_OBJECT問題,而這個問題僅針對Q_OBJECT中的一個特定問題。 – lpapp

回答

3

MyHeaderView沒有Q_OBJECT宏,您將其添加後,才建立你的項目後,不要忘了運行QMAKE

+0

是的,就是這樣,謝謝! – Alex

相關問題