error: no matching function for call to 'SimulationMode::connect(QString&, const char*, SimulationMode* const, const char*)'
QObject::connect (m_standingAgvID, SIGNAL (f(int)), this, SLOT (d(int)));
此处,m_standingAgvID
是QString
变量的对象,也在Q_PROPERTY
中使用。
f(int)和d(int)已在cpp代码的相应信号和槽区域中定义和声明。
考虑:
QString不发出信号。也许你应该告诉我们你是什么 试图实现。 - cmannett85
和
QString本身不是QObject,它不能连接信号和插槽。 - Tay2510
我有一个简单的变量,我们说int
类型是一个类成员,我把它变成了Q_PROPERTY
。
此变量将在QML
中设置。当其值发生变化时,我想在Qt
中调用一个信号。
这就是全部。
答案 0 :(得分:4)
使用关于int
的示例,可以这样做:
class foo : public QObject
{
Q_OBJECT
Q_PROPERTY( int value READ getValue WRITE setValue NOTIFY valueChanged )
public:
explicit foo( QObject* parent = nullptr ) :
QObject{ parent }, i_{ 0 } {}
virtual ~foo() {}
int getValue() const { return i_; }
public slots:
void setValue( int value )
{
if ( value != i_ ) {
i_ = value;
emit valueChanged( i_ );
}
}
signals:
void valueChanged( int value );
private:
int i_;
};
简而言之,您必须手动发出有关成员的更改通知信号。