QtApplets-自定义控件-5-属性研究

155 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

头图

QtApplets-自定义控件-5-属性研究

这一篇我们继续研究自定义控件的属性部分,上一篇中我们研究了单一的属性,但是像我们QWidget属性中的geometry属性下面有4个参数,如下图所示:

image-20211106115112889

那么这样的属性该怎么自定义了,今天来研究研究。


QtApplets-自定义控件-5-属性研究1 声明一个自定义的属性2 实现代码3 测试4 提升一下,使用自定义的类型☞ 源码

关键字: Q_PROPERTY属性自定义设置QRect

1 声明一个自定义的属性

这里我们将要搬运Qt官方代码中的代码来,使用Q_PROPERTY声明一个testGeometry的属性,其读取函数为testGeometry,设置函数为setTestGeometry

 Q_PROPERTY(QRect testGeometry READ testGeometry WRITE setTestGeometry)

声明两个函数和一个变量

     QRect testGeometry();
     void setTestGeometry(const QRect r);
     QRect testQRect;

2 实现代码

实现代码与原来的相识,如下

 QRect CustomControl::testGeometry()
 {
     return  testQRect;
 }
 ​
 void CustomControl::setTestGeometry(const QRect r)
 {
     m_label->setText(QString::number(r.width(),10));
     testQRect = r;
 }
 QRect CustomControl::testGeometry()
{
    return  testQRect;
}

void CustomControl::setTestGeometry(const QRect r)
{
    m_label->setText(QString::number(r.width(),10));
    testQRect = r;
}
QRect CustomControl::testGeometry()
{
    return  testQRect;
}

void CustomControl::setTestGeometry(const QRect r)
{
    m_label->setText(QString::number(r.width(),10));
    testQRect = r;
}

3 测试

把对应的库拷贝到Qt Designer 程序目录下,就可以看到我们自己的属性了。如下图所示

image-20211106130204245

4 提升一下,使用自定义的类型

想象一下,在上面的内容中,我们使用的QRect,这个还是Qt原生支持的内容,如果是我们自己定义的一种类型呢,他如何被Qt识别了,例如TestRect,详见后面更新的文章。

☞ 源码

源码链接:GitHub仓库自取

使用方法:☟☟☟