2013-12-23 98 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

相关问题