Aqu*_*irl -3 c++ qt signals signals-slots
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)));
Run Code Online (Sandbox Code Playgroud)
这里m_standingAgvID是QString变量的对象,该变量也用在中Q_PROPERTY。
f(int)和d(int)已在cpp代码的相应信号和时隙区域中定义和声明。
考虑:
QString不发出信号。也许您应该告诉我们您想要达到的目标。– cmannett85
和
QString本身不是QObject,它无法连接信号和插槽。– Tay2510
我有一个简单的变量,让我们说int类型是类成员,并且我已经将其设为Q_PROPERTY。
此变量将在中设置QML。当其值更改时,我想在中调用信号Qt。
就这样。
使用关于ints 的示例,它将像这样完成:
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_;
};
Run Code Online (Sandbox Code Playgroud)
简而言之,您必须手动发出有关成员的变更通知信号。