QT自定义简单的控件组合

这篇博客记录了使用QT开发环境,结合QLabel和QLineEdit创建一个固定内容的文本框加用户可编辑输入框的组件,以及结合QLabel和QSlider实现滑动条与文本框交互的功能。通过创建自定义类,设置布局和样式,并定义对外方法,博主分享了基础的QT控件组合实现步骤。
摘要由CSDN通过智能技术生成


前段时间QT开发的时候,有时候需要创建多个类似功能的组合控件用来显示或者用户交互。与其一个个增加控件,还要考虑控件之间的对齐问题,不如直接自定义需要的控件组合。因为之前不熟悉,也参考了很多网上的代码,这里给2个简单的例子,更多的实例完全可以根据自己的需求创建。

因为自己开发经验少,教程内容比较基础,自己做个记录,也给初学者做个参考。

开发环境

  • OS : macOS 10.15
  • QT : 5.9.9

QLabel+QLineEdit

一个固定内容的文本框+一个用户可编辑的输入框。
首先新建一个类MyLineEdit,创建对应的.h.cpp
基本思路:

  • 在类内部创建一个QBoxLayout作为两个控件的容器,控制控件的布局。
  • 在类内部创建一个QLabelQLineEdit,可根据需求设置样式。
  • 创建对外的方法控制QLabelQLineEdit对应属性。

代码很简单,可以直接对照代码看。
以下是.h文件:

#ifndef MYLINEEDIT_H
#define MYLINEEDIT_H

#include <QWidget>
#include <QLineEdit>
#include <QHBoxLayout>
#include <QLabel>


class MyLineEdit : public QWidget
{
   
    Q_OBJECT
public:
    explicit MyLineEdit(QWidget *parent = nullptr);
    ~MyLineEdit();

public:
    //设置文本和获取文本的方法
    void setLabelInfo(QString s);
    void setText(QString s);
    QString labelInfo();
    QString text();

private:
    QLabel *m_label;
    QLineEdit *m_lineEidt;
    QHBoxLayout *m_layout;
    //初始化内部控件
    void init();
};
#endif // MYLINEEDIT_H

对应的.cpp文件:

#include "mylineedit.h"

MyLineEdit::MyLineEdit(QWidget *parent):
    QWidget(parent)
{
   
    this->init();
}

MyLineEdit::~MyLineEdit()
{
   

}

void MyLineEdit::init()
{
   
    m_label = new QLabel();
    m_lineEidt = new QLineEdit();
    m_layout = new QHBoxLayout();

    //在这里可以设置组合控件内部的格式

    //简单设置下字体样式等
    m_label->setStyleSheet("color:rgb(128,128,128);font-family:'SimSun'");
    m_label->setObjectName("MS");
    m_lineEidt->setAlignment(Qt::AlignCenter);
    //固定Label的宽度,可以帮助对齐
    m_label->setFixedWidth(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值