嗨,我是Qt的新手。
我可以将类属性(或属性(绑定到QLabel文本吗?例如,
class Dog{
string name;
}
QLabel lbl;
当我更改狗的名字时,我想更改lbl.text
在Qt中,您谈论的是信号和插槽的领域。好方法:
Dog.h:
#ifndef DOG_H
#define DOG_H
#include "QObject"
class Dog: public QObject
{
Q_OBJECT
public:
void setDogsName(const QString &name)
{
m_Name = name;
emit dogsNameChanged(name);
}
signals:
void dogsNameChanged(const QString &name);
private:
QString m_Name;
};
#endif // DOG_H
信号/插槽连接需要Q_OBJECT
宏才能工作(并且它必须在private
部分中,例如这里的public:
之上(。代码必须在一个单独的.h文件中(!(。
main:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLabel lbl;
Dog dog;
QObject::connect(&dog, &Dog::dogsNameChanged, &lbl, &QLabel::setText);
dog.setDogsName("TEST");
lbl.show();
return a.exec();
}
结果:在这里。
点击此处阅读Qt中的连接。