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

相关文章
|
23天前
|
计算机视觉 数据格式
使用opencv在Qt控件上播放mp4文件
使用opencv在Qt控件上播放mp4文件
54 2
|
23天前
|
数据安全/隐私保护 图形学
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
|
23天前
|
API 容器
Qt中常用容器组控件介绍和实操-2
Qt中常用容器组控件介绍和实操
|
23天前
|
Windows
|
23天前
|
存储 索引 容器
【qt】联合容器和集合容器
【qt】联合容器和集合容器
17 2
|
23天前
|
C++ 容器
【qt】容器的用法
【qt】容器的用法
12 0
|
23天前
|
图形学 C++ 容器
QT信号与槽机制 和 常用控件介绍
QT信号与槽机制 和 常用控件介绍
QT信号与槽机制 和 常用控件介绍
|
23天前
|
开发框架 数据可视化 前端开发
【Qt 学习笔记】Qt控件概述
【Qt 学习笔记】Qt控件概述
31 0
|
23天前
|
图形学 Python 容器
【PyQt5桌面应用开发】3.Qt Designer快速入门(控件详解)
【PyQt5桌面应用开发】3.Qt Designer快速入门(控件详解)
81 0

推荐镜像

更多