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類型。他們不是指針。
我不明白爲什麼會發生這種情況。我使用相同的技術連接了其他信號和插槽,並且沒有問題。任何幫助將不勝感激,謝謝。
我不明白這是如何重複的。這解決了一般Q_OBJECT問題,而這個問題僅針對Q_OBJECT中的一個特定問題。 – lpapp