Qt_ui基础(自定义控件)

本文详细描述了如何创建一个新的UI类,添加控件,提升窗口类型,并通过信号槽机制实现QSpinBox和QSlider之间的联动,以及如何设置外部按钮控制自定义控件。
摘要由CSDN通过智能技术生成

 

目录

 1.创建新的设计类(ui类)

2. 创建所需控件

3. 添加所需控件窗口

4. 提升所需控件窗口

 5. 将控件之间进行连接

5.1 修改Spin Box 右侧的滚动条 跟着动 

 5.2 拖动滚动条  左侧的SpinBox 跟着动

5.3 运行结果

 5.4 设置外部按钮,来控制自定义控件


 在设计过程中需要许多控件之间相互关联又封装明确,就可以进行自定义控件类型

下面以 计数器 滚动条 相关联的控件 为例

 1.创建新的设计类(ui类)

2. 创建所需控件

在自己的设计类中放入相应的控件

3. 添加所需控件窗口

根据自己所创建设计类 的父类 来选择一个相同 基类窗口

在默认ui类中添加

在默认ui界面添加的widget窗口,其基类型QWidget 

4. 提升所需控件窗口

由于类型还是QWidget,是空窗口

所以需要将该窗口的类型 提升为 所需控件的类型

 

输入自己创建的ui类名称,选中全局包含可方便下次直接提升

提升之后类型改变

运行结果,该窗口就默认存在两个已经添加好的控件

 5. 将控件之间进行连接

通过信号和槽的链接来将两个控件关联起来

5.1 修改Spin Box 右侧的滚动条 跟着动 

由于QSpinBox的信号存在重载,所以直接放入作为信号就会指向不明确,所以需要函数指针

    //修改Spin Box   右侧的滚动条  跟着动
    //存在重载函数需要有函数指针
    void(QSpinBox:: *my_spinBox)(int) =  &QSpinBox::valueChanged;

    connect(ui->spinBox,my_spinBox,this,[=](int val){
       ui->horizontalSlider->setValue(val);
    });

 5.2 拖动滚动条  左侧的SpinBox 跟着动

    //修改滚动条   左侧的Spin Box  跟着动
    connect(ui->horizontalSlider,&QSlider::valueChanged,this,[=](int val){
       ui->spinBox->setValue(val);
    });

 Slisder的valueChanged没有重载,可以直接作为信号,返回值为int

5.3 运行结果

 5.4 设置外部按钮,来控制自定义控件

1.在父类窗口中添加两个按钮

 在父类自定义ui中设置两个函数来 获取当前窗口的值  和  设置当前窗口空间的值

void smallwidget::setVal(int val)
{
    ui->spinBox->setValue(val);
}

int smallwidget::getVal()
{
    return ui->spinBox->value();
}

 在父类cpp文件中链接两个按钮与自定义控件的关系

    //点击设置按钮,将自定义控件设置到一半位置
    connect(ui->pb_set,&QPushButton::clicked,this,[=](){
        ui->widget->setVal(50);
    });

    //点击获取按钮,获取自定义控件当前的值
    connect(ui->pb_get,&QPushButton::clicked,this,[=](){
       qDebug() << ui->widget->getVal();
    });

 运行结果

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt/C++是一种开发桌面应用程序的跨平台开发框架,它提供了丰富的工具和类库,能够方便快捷地编写自定义控件源码。 首先,我们需要创建一个继承自QWidget或QFrame的类来实现自定义控件。在这个类中,我们可以重载一些事件处理函数来实现控件的特定功能,比如绘制事件函数paintEvent()、鼠标事件函数mousePressEvent()等等。通过这些函数,我们可以控制控件的外观、响应用户输入等。 在实现自定义控件的外观时,可以利用Qt提供的各种绘图工具和API。例如,可以使用QPainter类来绘制各种形状、图像、文字等,还可以使用QPen和QBrush类来设置绘制的样式和颜色。通过这些工具,我们可以实现各种个性化的外观效果,如圆角、渐变、阴影等。 对于自定义控件的功能实现,可以根据需求使用Qt提供的各种功能模块。比如,使用QTimer类实现定时器功能,使用QMediaPlayer类实现音视频播放功能等等。此外,Qt还提供了一系列的信号和槽机制,可以方便地实现控件之间的交互和通信。 在自定义控件的使用方面,可以通过在其他QWidget中使用该控件的对象的方式来使用它。将自定义控件放入项目中,然后在界面中添加该控件的实例对象,即可展示该控件,并与其交互。也可以通过在UI界面设计软件中将该控件拖拽到需要的位置上,然后使用信号槽机制来实现与其他控件的交互。 总之,Qt/C++编写自定义控件源码需要熟悉Qt的基本概念和API,并结合自身的需求来设计和实现控件的外观和功能。通过合理的设计和编码,可以创建出各种各样的自定义控件,丰富应用程序的界面和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值