给自定义控件添加属性

  窗体控件都有属性,比如QLineEdit就有text属性,另外还有设置属性,比如QLineEdit的readOnly属性。下面就讲解一下如何给自己的控件添加属性的问题。对于我们的经纬度输入控件,它应该具有一个设置属性和一个值属性,我们把设置属性命名为inputMode,把值属性命名为value,先来讲解设置属性inputMode。

       对于inputMode属性,它应该是一个枚举值,分别对应控件的两种状态,即浮点输入模式和经纬度输入模式,因此这个类型应该定义为枚举型。另外对于Qt的控件类,如何声明属性,我们可以参考Qt的源代码,比如D:\Qt\4.8.4\src\gui\widgets目录下QMainWindow的定义,我们可以仿照其做法,实现输入模式属性,这里不多做解释,直接给出代码:

[cpp]  view plain copy
 
  1. class LogLatEdit : public QWidget  
  2. {  
  3.     Q_OBJECT  
  4.   
  5.     Q_ENUMS(InputMode)  
  6.     Q_PROPERTY(InputMode inputMode READ inputMode WRITE setInputMode)  
  7.     Q_PROPERTY(float value READ value WRITE setValue)  
  8. public:  
  9.     LogLatEdit(QWidget *parent = 0);  
  10.   
  11.     enum InputMode  
  12.     {  
  13.         Float,      //float number mode  
  14.         DegSecMin   //Degree second minute mode  
  15.     };  
  16.     InputMode inputMode()const;  
  17. void setInputMode(const InputMode mode);  
  18.   
  19.     double value() const;  
  20. void setValue(const double val);  
  21.     //其余略  
  22. };  
       仿照QMainWindow的DockOptions属性和iconSize属性,我们实现我们的inputMode属性和value属性。这里注意一下使用Q_PROPERTY宏声明属性的方法,用法很简单,不多解释。下面是对应属性的实现代码:

 

[cpp]  view plain copy
 
  1. LogLatEdit::InputMode LogLatEdit::inputMode() const  
  2. {  
  3.     return m_Mode;  
  4. }  
  5.   
  6.   
  7. void LogLatEdit::setInputMode(const InputMode mode)  
  8. {      
  9.     double val = this->value();  
  10.     if(mode==DegSecMin)  
  11.     {  
  12.         horizontalLayoutWidget->setVisible(true);  
  13.         horizontalLayoutWidget_2->setVisible(false);  
  14.     }  
  15.     else  
  16.     {  
  17.         horizontalLayoutWidget->setVisible(false);  
  18.         horizontalLayoutWidget_2->setVisible(true);  
  19.     }  
  20.     m_Mode = mode;  
  21.     this->setValue(val);  
  22. }  
  23.   
  24.   
  25. double LogLatEdit::value() const  
  26. {  
  27.     if(this->inputMode()==Float)  
  28.     {  
  29.         return this->lineEdit->text().toDouble();  
  30.     }  
  31.     else  
  32.     {  
  33.         double val = 0;  
  34.         val = this->spinBox->value() +  
  35.                 double(this->spinBox_2->value())/60.0 +  
  36.                 this->doubleSpinBox->value()/3600.0;  
  37.         return val;  
  38.     }  
  39. }  
  40.   
  41. void LogLatEdit::setValue(const double val)  
  42. {  
  43.     m_Value = val;  
  44.     if(this->inputMode()==Float)  
  45.     {  
  46.         this->lineEdit->setText(tr("%1").arg(val));  
  47.     }  
  48.     else  
  49.     {  
  50.         this->spinBox->setValue(int(val));  
  51.         this->spinBox_2->setValue(int((val-int(val))*60));  
  52.         this->doubleSpinBox->setValue(((val-int(val))*60-int((val-int(val))*60)));  
  53.     }  
  54. }  

转载于:https://www.cnblogs.com/lvdongjie/p/5105393.html

Qt自定义控件 开始 添加自定义属性 访问自定义属性 Qtcreator 添加自定义控件请看:https://blog.csdn.net/anyuliuxing/article/details/96604213 自定义控件属性添加: 1.定义属性宏. Q_PROPERTY(自定义属性 READ 读取自定义属性函数 WRITE 设置自定义属性函数) 2.声明和定义 变量和函数. (添加了宏和函数Qtcreator就会自己处理,把属性显示到编辑器右侧属性列表中) 示例代码: #ifndef TEMPCTRL_H #define TEMPCTR 阅读详情

相关推荐

C# 自定义控件添加属性

[Category("外观")] 表示在设计器中,Text属性出现在“外观”这一分组 [Description("按钮文字")] 表示对该属性的描述文字 [Browsable(true)] 表示该属性在设计器中可见 [DesignerSerializationVisibility(DesignerSerializationVisibili...

990

Qt控件属性设计器:动态添加属性

其中,itemChange()函数会在控件添加到场景中时被调用,在该函数中,我们获取CustomWidget类的元对象metaObject,并通过元对象获取我们刚才自定义属性myProperty的元属性metaProperty。在Qt的开发中,我们通常会使用控件属性设计器来设置控件的相关属性,但是默认情况下,设计器只能提供一些固定的属性,不能满足我们自定义属性的需求。上述代码实现了myProperty属性的读取和设置功能,注意m_myProperty是一个成员变量,用于保存myProperty属性的值。

2301_79325339的博客 772

Qt学习笔记11:自定义控件增加属性并通过qss设置样式

继承QLabel类实现一个类似于toolbutton的可选控件,有选择和未选择两种状态 第一步:首先定义属性 这里属性取名“checked”,有两种方式 方法一:在设计师里定义 点击加号,选择属性类型,这里两种状态,直接使用 bool 类型即可,属性名 checked 新增的属性如下图 方法二:在代码中定义 class LabelButton : public QLabel { Q_OBJECT Q_PROPERTY(bool checked READ isCh..

Leo的博客 4013

QT学习日记 | QWidget

获取控件的可用状态;设置控件的可用状态,true为可用,false为不可用;所谓禁用就是控件颜色呈灰色,该控件无法接收任何用户的输入事件,一个控件被禁用,其子类也会被禁用;这个属性也就是设置控件的尺寸,分别有如下属性;空间的横坐标位置控件的纵坐标位置宽度高度以上这四个属性 Qt 提供了一个类进行封装,这个类叫做 QRect;API获取控件尺寸属性,返回结果为 QRect;通过传入QRect 设置控件属性;通过四个属性来设置控件尺寸属性;API获取控件的窗口标题设置控件的窗口标题。

Nice_W的博客 1459

Qt两种传参形式(信号槽传参、界面传参)

一、UI界面传参 在Qt中传输数据通常有两种形式,一种是把待传输的数据先保存到UI界面的控件中,然后子类从界面中读取数据。 使用该控件作为参数传递承载。 1.首先将计算出的数值传到控件中 ui->BCResult_0->setValue(Robticspose[0]); ui->BCResult_1->setValue(Robticspose[1]); ui->BCResult_2->setValue(Robticspose[2]);

weixin_41405284的博客 4321

AndroidUI 自定义View--任意系统控件添加自定义属性

看到标题,我们想到,如果要在系统控件上加上自定义属性,并且能够解析出来。这好像有点不可能。我们经常容易想到的是,自定义一个View来继承系统控件,然后解析自己写的attr,这样可以达到使用自定义属性,但是此时就不是系统控件了,是自定义控件了,我们想要实现的效果是下面这样的: <ImageView android:id="@+id/iv_0" ...

做一个苦行僧的专栏 1225

055自定义控件之为控件添加属性

(1)创建一个新的“Windows窗体控件库”项目,命名为LimitedCheckedList,并将项目文件名修改为LimitedCheckedLisLvb。 (2)打开代码编辑窗口,并添加属性MaxltemsSelected。 Imports System.ComponentModel Public Class LimitedCheckedList Inherits System.Windows.Forms.CheckedListBox Private AutoS...

复行数十步 311

C 自定义控件属性添加事件

C# 自定义控件属性添加事件 去发现同类优质开源项目:https://gitcode.com/ 简介 本资源文件为您提供了关于C#自定义控件属性设置以及如何为自定义控件添加事件的相关知识和示例。通过学习本资源,您将能够更好地理解和运用自定义控件,提升您的C#编程能力。 文件内容 自定义控件属性 属性的概念与作用 如何定义自定义控件属性 属性的读写权限控制 添加自定义控件的事件 事件...

gitblog_06729的博客 436

android 控件自定义属性,android 组合控件添加自定义属性

实现效果: 第一个效果是在输入框中添加了一个时间选择的按钮,当点击按钮时弹出对应的对话框 第二个效果是在输入框中添加了一个textview,然后textview可以在XML文件中进行配置,主要介绍第二个,其实逻辑都是一样的 1. 在values下面添加文件attrs.xml文件实现效果:第一个效果是在输入框中添加了一个时间选择的按钮,当点击按钮时弹出对应的对话框第二个效果是在输入框中添加了一个te...

weixin_35651578的博客 307

Android自定义控件(三)之属性添加

上一篇博客讲解了给自定义控件添加事件,这篇博客讲解给自定义控件添加属性,首先介绍一下添加自定义属性的基本步骤: 1.在res/values文件下新建一个属性xml文件,如attrs.xml,xml的文件名字可以自己任意取,然后再属性文件里添加 &lt;declare-styleable&gt;标签,如下图所示 &lt;?xml version="1.0" encoding="utf-8...

yuanheng19930119的博客 913

自定义控件添加"自定义属性"

转载自http://www.cnblogs.com/carlosk/archive/2012/06/06/2538336.html 为自定义控件添加自定义属性 可以使用 declare-styleable。 1.首先,先写attrs.xml xml version="1.0" encoding="utf-8"?> resources> declare-styleab

mo_yuwan的专栏 698

winform自定义控件(gdi+)(2)———为自定义控件添加系统自带属性

我们在自定义控件的时候,难免需要给自定义控件添加一系列的属性,本文就来讲解如何实现

qq_34059233的博客 1267

在WPF程序中如何给自定义控件添加属性及方法

添加之后,当在点击自定义控件中的Button按钮时会触发ExecuteEven事件,使用自定义控件时可以添加ExecuteEven事件进行处理。这样使用控件的人就可以在自定义控件中对添加的Text属性进行访问,编辑和绑定。在控件.cs文件中添加依赖属性(快捷键propdp Tab键)在界面中需要显示的位置绑定依赖属性。根据所需的控件名称及事件名称更改。在想要调用的事件中添加

balabala___a的博客 1338

【Qt】窗体间传递数据(跨控件跨类),三种情况与处理方法

C++ Qt

shihoongbo的博客 2万+

Qt实现自定义控件属性设计器加载属性

在MyButton类中,我们添加了一个StringProperty对象m_stringProperty作为自定义属性,并在构造函数中进行初始化。在本示例中,我们首先创建了一个Designer对象,并使用其loadProperties()方法加载MyButton对象的属性。现在,我们可以在设计器中添加一个MyButton对象,并为其添加一个StringProperty属性。在Qt中,我们经常需要自定义控件,并在设计器中为其添加属性,方便用户进行使用。首先,我们需要创建一个属性类来存储我们要添加属性

CodeWWWCode的博客 567

QT控件自定义属性并支持QSS样式表+读取样式表的属性

C++中自定义属性borderColor,在qss中对应的名字为:qproperty-borderColor。冒号后面的值对应为该属性的值,他会被传递进C++代码中。边框颜色 border-color、边框半径 border-radius、背景颜色 background-color、字体大小font-size: 等等。样式表里有很多属性,例如。

野生猿-群号1025127672 3948

Qt Designer 给自定义控件添加属性

Qt 当中有一个复杂的属性系统(Property System)。 当你在Designer(设计师界面)中拉出来一个控件,接着,你可能会有一个需求要,例如把几个btn设为一组,可以是qss不需要写太多objectname就实现动态对每个btn的样式的操作,这个时候你就可以需要自己添加自己想需要的属性来把他们归为一类,并且用bool,=true的时候让这个btn进行简单的按钮高亮。 通过元数据对象系统读写属性 一个属性可以使用常规函数QObject::property()和QObject::setPrope

进击的小程序员 3714

PyQt5学习笔记06----Qt Designer自定义信号emit及传参

from PyQt5 import QtWidgets,QtCore from untitled import Ui_Form import time class MyWindow(QtWidgets.QWidget,Ui_Form): _signal=QtCore.pyqtSignal(str) #定义信号,定义参数为str类型

根号下的麻辣烫 5万+
上一篇: 配置uwsgi
下一篇: 如何配置数据库ODBC数据源
王爷的大房子
博客等级 码龄11年 81粉丝 1389原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值