热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Qt系统学习第三天

自定义控件:(封装SpinBox和水平进度条)SpinBox的默认大小是0-99;可通过setRang(0,10000)来设置SpinBox的大小; 本节就是将这两个控件封

自定义控件: (封装SpinBox和水平进度条)

  Spin Box的默认大小是0-99;可通过 setRang(0,10000) 来设置Spin Box的大小;

 

  本节就是将这两个控件封装成一个控件,方便后期重复使用;

步骤:

  1. 先给项目中新建一个类

   选中项目的名字, 鼠标右键 -> 添加新文件;此时可以添加一个C++-> C++ Class,但是C++ Class不带ui界面, 需要用代码来创建控件和编辑其属性;故此处用Qt -> Qt设计师界面类 -> Widget(空白界面,所有类的父类) -> 在<类名:>后面的LineEdit中, 给封装的类起个响亮的名字(SmallWidget), 头文件、源文件、界面文件自动修改 -> 完成;

  2. 在smallwiddget.ui 中, 将Spin Box 和 水平滑动条 放入,将整个ui界面水平布局, 再将ui界面的窗口拖动到最小; 

  3. 此时在widget.ui中,想用封装的自定义控件, 先在widget.ui中放入一个Widget控件(窗口), 鼠标右键单击刚放入的Widget窗口, 鼠标左键选择 "提升为..."; 在弹出的提升的窗口部件中,基类名称不用管, 在提升的类的名称中写入刚才创建的类的类名(SmallWidget), 写的时候注意大小写 !  头文件不用管, 选中全局包含(在项目中的任何一个窗口都可以使用此控件) , 点击 "添加"按钮. 添加完成后, 提升的类会上升到上面的窗口, 此时点击对话框底部的"提升"按钮, 回到widget.ui界面, 此时可以看到ui界面的右侧属性栏中, widget的类名称已改变成SmallWidget,而不再是QWidget. 此时再拉入一个widget_2,右键单击 -> 左键 "提升为" -> SmallWidget (全局包含的意义:可不限制窗口的将一个QWidget类提升为SmallWidget类)

  此时的smallwidget.ui:

  此时的widget.ui:

 

   运行界面:

   4. 因为把SmallWidget封装成了一个类, 在SmallWidget类中维护这两个控件要在smallwidget.cpp中的构造函数中编写代码, 进行Spin Box于滑动模块的对应的信号槽连接,使Spin Box增大,滑块随之移动, 滑块移动, Spin Box随之改变; 

void (QSpinBox::*sigValeChange)(int) = &QSpinBox::valueChanged; //Qt5中不能直接将信号直接写入connect,需要定义一个指针;
connect(ui->spinBox, sigValeChange, ui->horizontalSlider, &QSlider::setValue); //&QSlider里面没有对应的槽函数, 它的父类QAbstractSlider里面有setValue
connect(ui->horizontalSlider, &QSlider::valueChanged, ui->spinBox, &QSpinBox::setValue);

void (QSpinBox::*sigValeChange)(int) = &QSpinBox::valueChanged; //Qt5中不能直接将信号直接写入connect,需要定义一个指针;
connect(ui->spinBox, sigValeChange, ui->horizontalSlider, &QSlider::setValue); //&QSlider里面没有对应的槽函数, 它的父类QAbstractSlider里面有setValue
connect(ui->horizontalSlider, &QSlider::valueChanged, ui->spinBox, &QSpinBox::setValue);

 

 

 

 

 

  



推荐阅读
author-avatar
啊沙发的非飞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有