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

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

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

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


3.Tab Widget

QTabWidget:可以将多个控件以选项卡的形式展示,用户可以点击不同的选项卡来切换控件。

案例分析:

widget.h

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
 
#include <QTabWidget>
#include <QGridLayout>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QMessageBox>
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
 
private:
    QTabWidget *tabWidgetUI;
 
private slots:
    void MsgCommit();
};
#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"
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    this->setWindowTitle("Tab Widget");
    this->setGeometry(300,200,600,400);
 
    tabWidgetUI=new QTabWidget(this);
    tabWidgetUI->setGeometry(20,20,560,360);
    tabWidgetUI->show();
 
    bool m_showtabwidgetui1=true;
    bool m_showtabwidgetui2=true;
    // bool m_showtabwidgetui3=false;
    // bool m_showtabwidgetui4=false;
 
    if(m_showtabwidgetui1){
        QWidget *qwidget1=new QWidget();
        tabWidgetUI->addTab(qwidget1,"进程");
 
        QGridLayout *glayout=new QGridLayout();
 
        QLabel *lab1=new QLabel("请选择文件及文件夹:");
        QLineEdit *ledit1=new QLineEdit();
 
        QPushButton *pbt1=new QPushButton("消息框...");
        connect(pbt1,SIGNAL(clicked(bool)),this,SLOT(MsgCommit()));
 
        glayout->addWidget(lab1,0,0);
        glayout->addWidget(ledit1,0,1);
        glayout->addWidget(pbt1,0,2);
 
        qwidget1->setLayout(glayout);
 
    }
 
    if(m_showtabwidgetui2){
        QWidget *qwidget2=new QWidget();
        tabWidgetUI->addTab(qwidget2,"性能");
    }
}
 
Widget::~Widget()
{
}
 
void Widget::MsgCommit()
{
    QMessageBox::information(NULL,"testing","QMessageBox:命令按钮测试成功!",QMessageBox::Ok);
}

编译执行结果:

4.Frame

QFrame是一个QWidget的子类,可以用作容器,用于显示其他窗口部件或绘制简单的框架。QFrame可以用于创建矩形、线条和点等几何形状。QFrame还可以用于设置可用性、布局和样式表。

先进行ui设计两个框架:

再进行代码编写:

widget.h

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
 
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
 
private:
    Ui::Widget *ui;
};
#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 "ui_widget.h"
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
 
    setWindowTitle("Frame");
 
    ui->frame_1->setStyleSheet("background-color:yellow");
    ui->frame_2->setStyleSheet("background-color:black");
 
    ui->frame_1->setLineWidth(1);
    ui->frame_1->setMidLineWidth(1);
    ui->frame_1->setFrameShape(QFrame::Box);
    ui->frame_1->setFrameShadow(QFrame::Raised);
 
    ui->frame_2->setLineWidth(0);
    ui->frame_2->setMidLineWidth(1);
    ui->frame_2->setFrameShape(QFrame::Box);
    ui->frame_2->setFrameShadow(QFrame::Sunken);
}
 
Widget::~Widget()
{
    delete ui;
}
 

编译执行结果:

5.Dock Widget


QDockWidget是Qt框架中的一个小部件,用于创建可停靠的窗口。它提供了一个可停靠的窗口,其中包含了一个主要的小部件和一些辅助的小部件。它可以以四个停靠区域的任何一个(上、下、左、右)停靠到主窗口周围,也可以脱靶,浮动在主窗口之外。


QDockWidget的主要特点是:


  1. 可以独立于主窗口停靠和浮动。
  2. 可以在主窗口周围的四个方向停靠。
  3. 可以包含其他的子部件,方便组织用户界面。
  4. 可以通过API进行动态的操作,例如添加、移除、重新排列等。


QDockWidget的用途非常广泛,无论是作为工具条、面板、属性编辑器、日志查看器等都非常适合。在Qt中,使用QDockWidget可以轻松地实现各种类型的可停靠窗口。


案例分析:


mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

main.cpp

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

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
 
#include <QDockWidget> // 只能停靠在mainwindow里
#include <QLabel>
#include <QComboBox>
#include <QGridLayout>
#include <QPushButton>
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    setWindowTitle("QDockWidget");
 
    QDockWidget *dw=new QDockWidget("停靠窗口部件测试:Dock Widget-->Vico",this);
 
    // 设置颜色
    QPalette pal;
    pal.setColor(QPalette::Background,Qt::cyan);
    dw->setAutoFillBackground(true);
    dw->setPalette(pal);
 
    // 学历层次
    QLabel *lab=new QLabel("学历层次:");
 
    QComboBox *cbx=new QComboBox();
    cbx->addItem("小学");
    cbx->addItem("初中");
    cbx->addItem("高中");
    cbx->addItem("专科");
    cbx->addItem("本科");
    cbx->addItem("硕士研究生");
    cbx->addItem("博士研究生");
 
    QPushButton *pbt1=new QPushButton("清华大学");
    QPushButton *pbt2=new QPushButton("北京大学");
 
    // 通过栅格布局(网格布局)
    QGridLayout *glayout=new QGridLayout();
    glayout->addWidget(lab,0,0,1,1);
    glayout->addWidget(cbx,0,1,1,1);
    glayout->addWidget(pbt1,1,0,1,1);
    glayout->addWidget(pbt2,1,1,1,1);
 
    glayout->setHorizontalSpacing(10);
    glayout->setVerticalSpacing(10);
    glayout->setContentsMargins(20,20,20,20);
 
 
    QWidget *wgt=new QWidget();
    wgt->setLayout(glayout);
    dw->setWidget(wgt);
 
 
 
    dw->setMaximumSize(300,300);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 

编译执行结果:

相关文章
|
1月前
|
计算机视觉 数据格式
使用opencv在Qt控件上播放mp4文件
使用opencv在Qt控件上播放mp4文件
81 2
|
2天前
Qt控件(按钮、单选、复选、list、tree、table)
Qt控件(按钮、单选、复选、list、tree、table)
9 2
|
1月前
|
图形学 C++ 容器
QT信号与槽机制 和 常用控件介绍
QT信号与槽机制 和 常用控件介绍
QT信号与槽机制 和 常用控件介绍
|
1月前
|
容器 内存技术
Qt中常用容器组控件介绍和实操-1
Qt中常用容器组控件介绍和实操
|
1月前
|
存储 索引 容器
【qt】联合容器和集合容器
【qt】联合容器和集合容器
20 2
|
1月前
|
数据安全/隐私保护 图形学
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
Qt 输入组控件(Input Widgets)& 显示组控件(Display Widgets)详解
|
1月前
|
C++ 容器
【qt】容器的用法
【qt】容器的用法
19 0
|
1月前
|
开发框架 数据可视化 前端开发
【Qt 学习笔记】Qt控件概述
【Qt 学习笔记】Qt控件概述
41 0

推荐镜像

更多