QT常用GUI类库(基础代码)

一. 介绍

在QT中有很多供我们使用的类,我在这里给大家列举了我们常用的类,一下讲解全部采用写代码的方式展示给大家,每个模块的效果图会放在代码之前,供大家参考选择

二. 布局管理器

1. 绝对布局

将位置固定在某一个位置
#include <QPushButton>     //按钮所需头文件

在这里插入图片描述

    bt1 = new QPushButton("1", this);
    bt2 = new QPushButton("2", this);
    bt3 = new QPushButton("3", this);

    //设置按钮的位置  x:起始位置的x值 y:起始位置的y值 w:宽 h:高
    //bt1->setGeometry(int x,int y, int w, int h);
    bt1->setGeometry(100, 100, 200, 20);
    bt2->setGeometry(200, 200, 200, 20);
    bt3->setGeometry(100,100,200,20);
    bt3->move(20, 20);  //移动到对应坐标位置

2. 自动布局

2.1 水平

将三个按钮水平布局      

在这里插入图片描述

	#include <QHBoxLayout>       //头文件
	
    bt1 = new QPushButton("1", this);
    bt2 = new QPushButton("2", this);
    bt3 = new QPushButton("3", this);

    //1. 水平
    QHBoxLayout *hbox = new QHBoxLayout; //构造一个水平管理器
    //将按钮按顺序加入水平管理器
    hbox->addWidget(bt1);
    hbox->addWidget(bt2);
    hbox->addWidget(bt3);
    this->setLayout(hbox);  //将布局贴在当前界面上

2.2 垂直

将三个按钮垂直布局

在这里插入图片描述

	#include <QVBoxLayout>
	
    bt1 = new QPushButton("1", this);
    bt2 = new QPushButton("2", this);
    bt3 = new QPushButton("3", this);

    //2. 垂直
    QVBoxLayout *vbox = new QVBoxLayout; //构造一个水平管理器
    //将按钮按顺序加入垂直管理器
    vbox->addWidget(bt1);
    vbox->addWidget(bt2);
    vbox->addWidget(bt3);
    this->setLayout(vbox);  //将布局贴在当前界面上

2.3 栅格

类似二维数组,网格形状

在这里插入图片描述

	#include <QGridLayout>
	
    bt1 = new QPushButton("1", this);
    bt2 = new QPushButton("2", this);
    bt3 = new QPushButton("3", this);
    bt4 = new QPushButton("4", this);


    //3. 栅格
    QGridLayout *gbox = new QGridLayout; //构造一个水平管理器
    //将按钮按顺序加入垂直管理器

    gbox->addWidget(bt1, 0, 0);   // 0行0列
    gbox->addWidget(bt2, 1, 1,3,2);
    gbox->addWidget(bt3, 1, 2, 2, 1);   //1行2列,占2行,占1列
    gbox->addWidget(bt4,3,3);
    bt3->setFixedHeight(50);
    this->setLayout(gbox);  //将布局贴在当前界面上

2.4 布局嵌套

在这里插入图片描述

    bt1 = new QPushButton("1", this);
    bt2 = new QPushButton("2", this);
    bt3 = new QPushButton("3", this);
    bt4 = new QPushButton("4", this);

    //4. 布局嵌套
    QHBoxLayout *hbox = new QHBoxLayout;   //3 4 水平布局
    hbox->addWidget(bt3);
    hbox->addStretch(); //加弹簧
    hbox->addWidget(bt4);
    QVBoxLayout *vbox = new QVBoxLayout;   //1 2 (3 4) 垂直布局
    vbox->addWidget(bt1);
    vbox->addWidget(bt2);
    vbox->addLayout(hbox);
    setLayout(vbox);

三. 按钮

1. 普通按钮

在这里插入图片描述

	#include <QPushButton>   //头文件

    /*普通按钮*/
    pb = new QPushButton("普通按钮");
    pb->setText("你好");                      //设置按钮文字
    pb->setIconSize(QSize(100, 100));        //设置图标大小
    pb->setIcon(QIcon(":/hello.jpg"));       //设置图标
    pb->setMinimumSize(100, 100);            //设置最小大小
    pb->setMaximumSize(200, 200);            //设置最大大小

2. 工具按钮

类似Qt Creator右下角的运行代码按钮

在这里插入图片描述

	#include <QToolButton>     //头文件

    /*工具按钮*/
    tb = new QToolButton;
    tb->setText("工具按钮");
    tb->setIcon(QIcon(":/icon/播放.png"));   //设置图标

3. 单选按钮

只能选择其中一个选项

在这里插入图片描述

	#include <QRadioButton>    //头文件

    /*单选按钮*/
    rb = new QRadioButton("A");
    rb1 = new QRadioButton("B");

4.多选按钮

可以同时选择多个选项

在这里插入图片描述

	#include <QCheckBox>
	
    /*复选按钮*/
    cb = new QCheckBox("A");
    cb1 = new QCheckBox("B");
    cb2 = new QCheckBox("C");

5. 命令按钮

按钮链接到其他软件

在这里插入图片描述

	#include <QCommandLinkButton>

    /*命令按钮*/
    cmdb = new QCommandLinkButton("启动计算器");
    connect(cmdb, &QCommandLinkButton::clicked, [&](){
        QProcess *p = new QProcess;
        p->execute("calc");
    });

四. 输入部件

1. 标签

1.1 文字标签

固定显示内容,没有按钮效果
在这里插入图片描述

	#include <QLabel>   //头文件
	
    //文字标签
    lb_text = new QLabel("我是一个文字标签");
    lb_text->setAlignment(Qt::AlignCenter); //设置对齐方式

1.2 图片标签

固定显示图片

在这里插入图片描述

	#include <QLabel>   //头文件
		
    //图片
    lb_pix = new QLabel;
    lb_pix->setMaximumSize(100, 100);       //设置最大大小
    lb_pix->setScaledContents(true);        //设置自动缩放显示
    lb_pix->setPixmap(QPixmap("C:\\Users\\26640\\Pictures\\Saved Pictures\\hello.jpg"));

1.3 动画标签

可以讲gif动图设置成动画标签,让label动起来

在这里插入图片描述

	#include <QLabel>   //头文件
	#include <QMovie>

    //动画
    lb_gif = new QLabel;
    lb_gif->setMaximumSize(200, 100);
    lb_gif->setScaledContents(true);          //设置自动缩放显示
    QMovie *m = new QMovie("D:\\ikun.gif");   //读取动图,存放到一个电影类中
    m->start();                               //播放电影
    lb_gif->setMovie(m);                      //标签设置该电影类

2. 文本浏览器

可以识别 html 语法

在这里插入图片描述

	#include <QTextBrowser>
	
    /* 文本浏览器 */
    tb = new QTextBrowser;
    tb->setText("<!DOCTYPE html>\
                <html>\
                <head>\
                <meta charset=\"utf-8\">\
                <title>菜鸟教程(runoob.com)</title>\
                </head>\
                <body>\
                <h1>我的第一个标题</h1>\
                <p style=\"background-color:rgb(255,255,0)\">我的第一个段落。</p>\
                </body>\
                </html>");

3. 进度条

类似下载进度条,如果设置定时器,可以实现让进度条每一秒加1

在这里插入图片描述

	#include <QProgressBar>
	#include <QTimer>
	
	/* 进度条*/
    pbr =  new QProgressBar;
    pbr->setRange(0, 100);     //设置进度条范围
    pbr->setValue(36);

    QTimer *t = new QTimer;
    connect(t, &QTimer::timeout, [&](){     //lambda表达式
        static int x = 0;
        pbr->setValue(x);                   //设置进度条数值Value
        x++;
    });
    t->start(1000);                         //1000毫秒,一秒触发一次
	

4. 仿七段数码管

在这里插入图片描述

	#include <QLCDNumber>
	#include <QTimer>

    /* 仿七段数码管 */
    lcd = new QLCDNumber;
    lcd->setMinimumHeight(100);
    lcd->setDigitCount(20);

    QTimer *t = new QTimer;
    connect(t, &QTimer::timeout, [&](){     //lambda表达式
        static int x = 0;
        lcd->display(x);                   //设置数码管数值
        x++;
    });
    t->start(1000);                         //1000毫秒,一秒触发一次

5. 日历窗口

上面是一个七段数码管,实现点击日历中的日期,并在数码管中显示

在这里插入图片描述

	#include <QLCDNumber>
	#include <QCalendarWidget>
	
    /* 仿七段数码管 */
    lcd = new QLCDNumber;
    lcd->setMinimumHeight(100);
    lcd->setDigitCount(20);

    /* 日历窗口*/
    cd = new QCalendarWidget;
    connect(cd, &QCalendarWidget::clicked, [&](QDate d){
        lcd->display(d.toString("yyyy-MM-dd"));
    });

五. 输出部件

1. 行编辑框

类似登录时输入账号,密码这类输入框

在这里插入图片描述

  	#include <QLineEdit>
  	
    /*行编辑框*/
    lineedit = new QLineEdit;
    lineedit->setPlaceholderText("密码");        //设置提示
    lineedit->setEchoMode(QLineEdit::Password); //设置回显模式

2. 文本编辑框

在这里插入图片描述

	#include <QTextEdit>
	
	/* 文本编辑框 */
    textedit = new QTextEdit;
    textedit->setText("");        //设置文本框中的内容
    textedit->toPlainText();      //获取文本框中的内容

3. 下拉框

3.1 普通下拉框

下拉框可以选择其他一个,这里实现选择下拉框中的内容,追加显示到文本编辑框中

在这里插入图片描述

	#include <QComboBox>
	#include <QTextEdit>
	
	/* 文本编辑框 */
    textedit = new QTextEdit;
    textedit->setText("");        //设置文本框中的内容
    textedit->toPlainText();      //获取文本框中的内容

    /* 下拉框 */
    combobox = new QComboBox;
    combobox->addItem("成都");
    combobox->addItem("北京");
    combobox->addItem("上海");
    connect(combobox, SIGNAL(activated(QString)), textedit, SLOT(append(QString)));

3.2 字体下拉框

选择文本编辑框中的内容,再选择字体

在这里插入图片描述

	#include <QTextEdit>
	#include <QFontComboBox>

    /* 文本编辑框 */
    textedit = new QTextEdit;
    textedit->setText("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈");        //设置文本框中的内容
    textedit->toPlainText();      //获取文本框中的内容

    /* 字体下拉框*/
    fontcombobox = new QFontComboBox;
    connect(fontcombobox, SIGNAL(currentFontChanged(QFont)), textedit, SLOT(setCurrentFont(QFont)));

4. 自旋框

将自旋框中的内容打印到文本编辑框中,可以上下实现增减

在这里插入图片描述

	#include <QTextEdit>
	#include <QSpinBox>
	
	/* 文本编辑框 */
    textedit = new QTextEdit;
    textedit->setText("");        //设置文本框中的内容
    textedit->toPlainText();      //获取文本框中的内容

    /* 自旋框 */
    spinbox = new QSpinBox;
    connect(spinbox, SIGNAL(valueChanged(QString)), textedit, SLOT(append(QString)));

5. 旋钮

旋动旋钮,进度条随着旋钮变化

在这里插入图片描述

	#include <QProgressBar>
	#include <QDial>
	
	/* 进度条*/
    pbr =  new QProgressBar;
    pbr->setRange(0, 100);     //设置进度条范围

    /* 旋钮 */
    dial = new QDial;
    connect(dial, SIGNAL(valueChanged(int)), pbr, SLOT(setValue(int)));

6. 滚动条

实现拖动滚动条,进度条也随之变化

在这里插入图片描述

	#include <QScrollBar>
	#include <QProgressBar>

	/* 进度条*/
    pbr =  new QProgressBar;
    pbr->setRange(0, 100);     //设置进度条范围

    /* 滚动条 */
    scrollbar = new QScrollBar;
    scrollbar->setOrientation(Qt::Horizontal); //放置方式 水平?垂直
    connect(scrollbar, SIGNAL(valueChanged(int)), pbr, SLOT(setValue(int)));

7. 滑动杆儿

拖动滑动杆,进度条随之变化

在这里插入图片描述

	#include <QSlider>
	#include <QProgressBar>

	/* 进度条*/
    pbr =  new QProgressBar;
    pbr->setRange(0, 100);     //设置进度条范围

    /* 滑动杆儿 */
    slider = new QSlider;
    slider->setOrientation(Qt::Horizontal); //放置方式 水平?垂直
    connect(slider, SIGNAL(valueChanged(int)), pbr, SLOT(setValue(int)));
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值