Qt中常用容器组控件介绍和实操-1

简介: Qt中常用容器组控件介绍和实操

常用容器组控件(Containers):

控件名称依次解释如下(常用的用红色标出):

  • Group Box: 组合框: 提供带有标题的组合框框架
  • Scroll Area : 滚动区域
  • Tool Box: 工具箱
  • Tab Widget: 标签小部件
  • Stacked Widget: 堆叠部件
  • Frame : 框架
  • Widget: 小部件
  • MdiArea : MDI 区域
  • Dock Widget: 停靠窗体部件
  • QAxWidget: 封装 Flash 的 ActiveX 控件
1.Group Box

QGroupBox是一个QWidget的子类,用于显示一组相关的窗口部件。QGroupBox可以带有一个标题,它通常用于对窗口部件进行分组,以便更好地组织它们。QGroupBox还可以用于设置可用性、布局和样式表。


案例分析:


widget.h

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
};
#endif // WIDGET_H

main.cpp

#include "widget.h"
 
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

widget.cpp

#include "widget.h"
 
#include <QGroupBox>
#include <QRadioButton>
#include <QPushButton>
#include <QCheckBox>
#include <QVBoxLayout> // 可以在水平方向和垂直方向进行排列的控件,QHBoxLayout/QVBoxLayout所继承
#include <QGridLayout>
 
#include <QMenu>
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    this->setWindowTitle("QGroupBox");
 
    // 组合框1:gpb_1
    QGroupBox *gpb_1 = new QGroupBox("单选按钮组1");
    QRadioButton *rbtn_1=new QRadioButton("RadioButton1");
    QRadioButton *rbtn_2=new QRadioButton("RadioButton2");
    QRadioButton *rbtn_3=new QRadioButton("RadioButton3");
 
    QVBoxLayout *vbly1 = new QVBoxLayout;
    vbly1->addWidget(rbtn_1);
    vbly1->addWidget(rbtn_2);
    vbly1->addWidget(rbtn_3);
    gpb_1->setLayout(vbly1);
 
    // 组合框2:gpb_2
    QGroupBox *gpb_2=new QGroupBox("复选按钮组2");
    QCheckBox *cbx1=new QCheckBox("checkbox1");
    QCheckBox *cbx2=new QCheckBox("checkbox2");
    QCheckBox *cbx3=new QCheckBox("checkbox3");
 
    // 全选的复选框能实时呈现(全选、半选、未选)
    // cbx2->setTristate(true); // 设置是否支持半选状态,默认不支持半选态
    cbx2->setChecked(true);
 
    QVBoxLayout *vbly2 = new QVBoxLayout;
    vbly2->addWidget(cbx1);
    vbly2->addWidget(cbx2);
    vbly2->addWidget(cbx3);
    gpb_2->setLayout(vbly2);
 
    // 组合框3:gpb_3
    QGroupBox *gpb_3=new QGroupBox("单选按钮和复选按钮组3");
    gpb_3->setCheckable(true);
 
    QRadioButton *rbtn_31=new QRadioButton("RadioButton31");
    QRadioButton *rbtn_32=new QRadioButton("RadioButton32");
    QRadioButton *rbtn_33=new QRadioButton("RadioButton33");
    QCheckBox *cbx4=new QCheckBox("checkbox4");
    cbx4->setChecked(true);
 
    QVBoxLayout *vbly3=new QVBoxLayout;
    vbly3->addWidget(rbtn_31);
    vbly3->addWidget(rbtn_32);
    vbly3->addWidget(rbtn_33);
    vbly3->addWidget(cbx4);
    gpb_3->setLayout(vbly3);
 
 
    // 组合框4:gpb_4
    QGroupBox *gpb_4=new QGroupBox("综合按钮组4");
    gpb_4->setCheckable(true);
    gpb_4->setChecked(true);
 
    QPushButton *pbtn_4=new QPushButton("PushButton4");
    QPushButton *pbtn_5=new QPushButton("PushButton5");
    pbtn_5->setCheckable(true); // 设置按钮可以按下去
    pbtn_5->setChecked(true);   // 设置按钮5为默认按钮
    QPushButton *pbtn_6=new QPushButton("PushButton6");
 
    // 命令按钮6添加子菜单
    QMenu *mu=new QMenu(this);
    mu->addAction("King");
    mu->addAction("Darren");
    mu->addAction("Mark");
    mu->addAction("Vico");
    pbtn_6->setMenu(mu);
 
    QVBoxLayout *vbly4=new QVBoxLayout;
    vbly4->addWidget(pbtn_4);
    vbly4->addWidget(pbtn_5);
    vbly4->addWidget(pbtn_6);
    gpb_4->setLayout(vbly4);
 
    QGridLayout *gdlyout=new QGridLayout;
    gdlyout->addWidget(gpb_1,0,0,1,1);
    gdlyout->addWidget(gpb_2,0,1,1,1);
    gdlyout->addWidget(gpb_3,1,0,1,1);
    gdlyout->addWidget(gpb_4,1,1,1,1);
 
    this->setLayout(gdlyout);
}
 
Widget::~Widget()
{
}
 

编译执行结果:

2.Scroll Area

QScrollArea:可以将某个控件包含在一个滚动区域内,当控件内容超出显示区域时,用户可以通过滚动条来查看所有内容。

首先添加一张图片

显示一张图片滑动案例分析:

widget.h

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
};
#endif // WIDGET_H

main.cpp

#include "widget.h"
 
#include <QApplication>
 
#include <QLabel>
#include <QScrollArea> // QScrollArea当中有很多功能继承来自于QAbstractScrollArea
#include <QGridLayout>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
 
    w.resize(300,200);
 
    QLabel *qljpg=new QLabel;
    qljpg->setScaledContents(true);
    QImage imagejpg(":/new/prefix1/image01/1.png");
    qljpg->setPixmap(QPixmap::fromImage(imagejpg));
 
    QScrollArea *sArea=new QScrollArea;
 
    // 居中
    sArea->setAlignment(Qt::AlignCenter);
 
    // 根据窗口比例显示
    // sArea->setWidgetResizable(true);
 
    sArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); // 水平滑动
    sArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); // 垂直滑动
 
    sArea->setWidget(qljpg);
 
    QGridLayout *glayout=new QGridLayout;
    glayout->addWidget(sArea);
 
    w.setLayout(glayout);
 
    w.show();
    return a.exec();
}

widget.cpp

#include "widget.h"
 
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
}
 
Widget::~Widget()
{
}
 

编译执行结果(可水平和垂直滑动图片):


Qt中常用容器组控件介绍和实操-2

https://developer.aliyun.com/article/1507896

相关文章
|
6天前
|
网络协议 Linux C++
【Qt】多种控件实现“hello world“
【Qt】多种控件实现“hello world“
|
6天前
|
前端开发 程序员 API
【Qt】控件介绍
【Qt】控件介绍
|
10天前
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
18 3
|
10天前
|
存储
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Table Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Table Widget的说明及介绍
15 3
|
10天前
|
索引
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
27 3
|
10天前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
24 2
|
10天前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
23 2
|
10天前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
16 2
|
10天前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
21 2
|
10天前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout
31 2

推荐镜像

更多