gpt4 book ai didi

c++ - Q_PROPERTY 与私有(private)二传手

转载 作者:行者123 更新时间:2023-12-02 10:35:07 25 4
gpt4 key购买 nike

我有一个 QObject,其属性可从 QML 访问。
就像是:

Class C : public QObject {
Q_OBJECT
public:
explicit C(QObject * parent = nullptr);
Q_PROPERTY(QString ro_text READ ro_text WRITE setRo_text NOTIFY ro_textChanged)
};

是否可以将 setter(setRo_text) 设为“私有(private)”,因此不能从 QML 修改属性,但仍可以从 C++ 代码(在类内部)设置?

最佳答案

如果您不希望从 QML 修改它,则不要声明 WRITE,并创建一个方法,每次属性更改时都会发出信号,setter 方法可以是公共(public)的或私有(private)的,但无法访问在 QML 中

class C: public QObject{
Q_OBJECT
Q_PROPERTY(QString ro_text READ ro_text NOTIFY ro_textChanged)
public:
C(QObject *parent=nullptr): QObject(parent){

}
QString ro_text() const {
return m_ro_text;
}
Q_SIGNALS:
void ro_textChanged();
private:
void setRo_text(const QString & text){
if(m_ro_text == text)
return;
m_ro_text = text;
Q_EMIT ro_textChanged();
}
QString m_ro_text;
};

关于c++ - Q_PROPERTY 与私有(private)二传手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60674376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com