【发布时间】:2014-01-12 00:56:09
【问题描述】:
我正在尝试将信号连接到插槽。该项目编译正常,但在运行时出现此错误:
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 的一个特定问题。
标签: qt signals signals-slots