qt自定义控件属性,qt常用控件及属性
1.Qt属性系统Qt属性系统,使用Q_PROPERTY(.)宏来完成自定义属性到元对象系统的属性注册。对于属性系统,也有不需要注册的属性值,称为Qt弱属性。属性系统要求该类必须从QObject或其子类继承。注册方法如下
` ` ` c
Q_PROPERTY(类型名称
(READ getFunction[WRITE setFunction]
成员memberName[(READ getFunction WRITE setFunction)]
[复位resetFunction]
[通知通知信号]
[修订int]
[可设计的布尔]
[脚本化布尔]
[存储的布尔值]
[用户布尔]
[常数]
[最终])
通常,需要提供属性的名称和读取方法。属性的类型是QVariant支持的任何类型。对于非内置的新类型,需要注册后才能使用。写就是写方法,一般用来修改属性值。NOTIFY标记属性改变时需要发送的信号。大多数情况下,你只需完成上述功能即可。2.Qt属性系统的使用。以仪器为例,在instrument类中注册一个角度属性,并添加其属性动画。以下是报名声明。
` ` ` c
//在类中注册角度属性,并提供属性set/get方法。
q _ PROPERTY(int angle READ angle WRITE set angle);
int angle(){
返回轧车;
}
void setAngle(int angle){
mAngle=角度;
}
通过上面的注册语句,这个类包含了angle属性。对属性值的访问可以通过使用angle()函数或使用对象名来获得,如object- Property(angle )。toInt()。3.在自定义属性中添加属性动画,使用Qt属性动画完成仪器的非线性自测扫描。将动画添加到当前自定义属性的过程如下
3.1注册属性并提供set/get方法
类仪表板:公共QWidget
{
q _对象
公共:
显式仪表板(q widget parent=nullptr);
void paint scale(q painter paint);
void paint pointer(q painter paint);
q _ PROPERTY(int angle READ angle WRITE set angle);
int angle(){
返回轧车;
}
void setAngle(int angle){
mAngle=角度;
}
信号:
受保护:
void paintEvent(QPaintEvent事件)覆盖;
私人:
int mAngle=0;
qpropertyaanimation manimation go;
qpropertyaanimation manimation back;
};
## 3.2往复动画带设置指针的表盘指针在模拟自测时需要往复运动,所以需要两组渐变动画,代码为` ` ` ``` ` cmanimatongo.set属性名( angle );manimation go . settargetobject(this);manion go . set duration(2000年);manimation go . setstartvalue(0);manimation go . setendvalue(220);manimation go . seteasingcurve(QEasingCurve:in CIRC);manimation go . start();q timer * timer=new q timer(this);connect(timer,QTimer:timeout,this,[=](){ update();});manimation back . set property name( angle );manionback . settargetobject(this);manimation back . set duration(1500);manimation back . set start value(220);manimation back . setendvalue(0);manionback . seteasingcurve(QEasingCurve:in CIRC);3.3属性动画结果如下
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。