汽修网站建设免费,网站推广策略什么时候,免费开设网站,网站设计需要什么专业在之前我写过如何调用函数#xff0c;当时的属性都是手搓的#xff0c;也就是自己写成员变量、变化信号和读写函数#xff0c;但其实有一个很便捷的方法#xff0c;即使用Q_PROPERTY#xff0c;下面给出标准结构#xff1a;Q_PROPERTY(数据类型 变量名 READ 变量名 WRITE…在之前我写过如何调用函数当时的属性都是手搓的也就是自己写成员变量、变化信号和读写函数但其实有一个很便捷的方法即使用Q_PROPERTY下面给出标准结构
Q_PROPERTY(数据类型 变量名 READ 变量名 WRITE set变量名 NOTIFY 变量名Changed FINAL)//FINAL 禁止子类覆盖此属性这句语句也不用记输入Q_PROPERTY是能够自动补全的同时在输入变量名时qt也会同步帮你修改后续只能说是相当的方便。那里面的函数怎么实现呢甚至也不需要自己实现在语句末尾按下altenter选择Generate Missing Q_PROPERTY Membersqt会自动补全没有写的成员和函数声明并带上函数实现也属于是一套龙服务了这是我的代码补全后的样子
//mediainfo.h...class MediaInfo : public QObject
{Q_OBJECT
public:......Q_PROPERTY(QString currenttitle READ currenttitle WRITE setCurrenttitle NOTIFY currenttitleChanged FINAL)QString currenttitle() const;void setCurrenttitle(const QString newCurrenttitle);signals:void currenttitleChanged();private:QString m_currenttitle;
};...
//mediainfo.cpp.........void MediaInfo::getdata(const QString file)
{......setCurrenttitle(最新标题); //这是我在自己写的函数中进行赋值
}QString MediaInfo::currenttitle() const
{return m_currenttitle;
}void MediaInfo::setCurrenttitle(const QString newCurrenttitle)
{if (m_currenttitle newCurrenttitle)return;m_currenttitle newCurrenttitle;emit currenttitleChanged();
}
而且这样我们就能够通过属性名在qml中直接访问和绑定了
Button{...onClicked: {musicfile.open()}
}
FileDialog{id:musicfile...onAccepted: {mediasolve.getdata(selectedFile)console.log(mediasolve.currenttitle) //打印 最新标题}
}
MediaInfo{id:mediasolve
}当然在极其便利的反面就是代码可能比较冗长可能会实现多余的函数而且性能开销可能会较大。但是熟练运用Q_PROPERTY仍是让开发更加快速、便捷的实用方法~