Qt-C++基础界面开发(2- 简单Display Widget控件和Item Widget控件的使用)

1 Display Widget控件的简单使用

部分Display Widget的控件,只能作为显示(display)使用,因此部分情况下,是不需要信号和槽函数的

1.1 label控件的基本操作

label一般用来作为说明文字和控件组合在一起
label还可以作为背景图片添加在界面上
label作为光板对其属性进行操作,达到某些效果,如红绿灯等设计label的颜色实现变化

1.2 textBrowser控件的基本操作

1、添加ui进qt designer,并对控件命名
2、只作显示使用,不需要信号和槽函数
3、默认大类为QTextBrowser
4、直接在界面的cpp文件对其进行显示

1、 设计界面的textBrowser对其进行命名

在这里插入图片描述
2、对其进行内容的清除添加操作

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 代码在此后面添加
    // 默认大类为QTextBrowser
    ui->textBrowser->clear();
    ui->textBrowser->append("hello");



}

MainWindow::~MainWindow()
{
    delete ui;
}

3、显示效果
在这里插入图片描述

1.3 LCD Number控件的基本操作

1、添加ui进qt designer,并对控件命名
2、直接在界面的cpp文件对其进行显示

    ui->setupUi(this);
    // 代码在此后面添加
    ui->LCD1->display("10");

在这里插入图片描述

1.4 progressBar控件的基本操作

1、添加ui进qt designer,并对控件命名
2、直接在界面的cpp文件对其进行显示

    ui->setupUi(this);
    // 代码在此后面添加
    // 设置区间、数值等等
    ui->pgb->setValue(88);

在这里插入图片描述

1.5 graphic View控件的基本操作

1、graphic View可以用来显示一些图形
2、其实采用widget控件也能显示图像
3、此处包括一些基础图像的绘制,但是图像的一些设置需要摸索

  • .pro文件添加charts,例如
QT       += charts
QT       += widgets
  • 在界面的.h文件添加绘图的类
#include <QtCharts>
#include <QGraphicsItem>
#include <QGraphicsView>
  • 在界面UI添加graphic View,并命名
    在这里插入图片描述

  • 此时的.h文件都如下所示,只是添加了几个头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QPushButton>
#include <QtCharts>
#include <QGraphicsItem>
#include <QGraphicsView>

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

1.5.1 绘制柱状图

在界面的.cpp文件实现柱状图的绘制

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 代码在此后面添加

    // 1、设置集合
    QBarSet *set0 = new QBarSet("产品1");
    QBarSet *set1 = new QBarSet("产品2");

    // 2、设置集合的数据
    *set0<<4<<6<<8;
    *set1<<2<<3<<4;

    // 3、将集合和数据添加到柱状图
    QBarSeries *series = new QBarSeries();
    series->append(set0);
    series->append(set1);

    // 4、创建图像
    QChart *chart = new QChart();
    chart->addSeries(series);
    // // 不需要title
    // chart->setTitle("生产直方图");
    chart->setAnimationOptions(QChart::SeriesAnimations);

    // 5、X轴的文字内容
    QStringList categories;
    categories<<"1月"<<"2月"<<"3月";

    // 6、创建坐标值并添加坐标轴内容
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(categories);
    chart->createDefaultAxes();
    chart->setAxisX(axis, series);

    // 7、将坐标轴文字竖排
    axis->setLabelsAngle(-90);

    // 8、显示下方注释,如红色是产品1,蓝色是产品2
    chart->legend()->setVisible(true);
    chart->legend()->setAlignment(Qt::AlignBottom);

    // 9、显示图像在graphic View上
    QChartView *chartView = new QChartView(chart,ui->gview);
    chartView->setRenderHint(QPainter::Antialiasing);
    chartView->resize(ui->gview->size());
    // 设计图像的主题
    chartView->chart()->setTheme(QChart::ChartThemeBlueCerulean);
    chartView->show();

}

MainWindow::~MainWindow()
{
    delete ui;
}

显示的效果如下图所示:
在这里插入图片描述

1.5.2 绘制折线图

在cpp文件绘制折线图

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 代码在此后面添加

    // 1、设置集合
    QLineSeries *lineseries = new QLineSeries();

    // 2、设置集合的数据
    for(int i = 0; i < 3; ++i){
        lineseries->append(i,2*(i+1));
    };

    // 3、创建图像
    QChart *chart = new QChart();
    chart->addSeries(lineseries);
    // // 不需要title
    // chart->setTitle("生产直方图");
    chart->setAnimationOptions(QChart::SeriesAnimations);

    // 4、X轴的文字内容
    QStringList categories;
    categories<<"1月"<<"2月"<<"3月";

    // 5、创建坐标值并添加坐标轴内容
    QValueAxis *axisY = new QValueAxis();
    chart->setAxisY(axisY, lineseries);
    axisY->setRange(0, 8);

    // 6、将坐标轴文字竖排
    QBarCategoryAxis *axis = new QBarCategoryAxis();
    axis->append(categories);
    chart->setAxisX(axis, lineseries);
    axis->setLabelsAngle(-90);

    // 7、显示下方注释,如红色是产品1,蓝色是产品2
    chart->legend()->setVisible(true);
    chart->legend()->setAlignment(Qt::AlignBottom);

    // 8、显示图像在graphic View上
    QChartView *chartView = new QChartView(chart,ui->gview);
    chartView->setRenderHint(QPainter::Antialiasing);
    chartView->resize(ui->gview->size());
    // 设计图像的主题
    chartView->chart()->setTheme(QChart::ChartThemeBlueCerulean);
    chartView->show();
}

MainWindow::~MainWindow()
{
    delete ui;
}

效果如下图所示:
在这里插入图片描述

1.5.3 绘制饼状图

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 代码在此后面添加

    QPieSeries *pieseries = new QPieSeries();
    QChart *piechart = new QChart();
    pieseries->setHoleSize(0.5);

    pieseries->append("剩余产品数量",80);
    QPieSlice *slice = pieseries->append("已完成数量", 20);

    slice->setExploded();
    slice->setLabelVisible();

    QChartView *piechartView = new QChartView(piechart,ui->gview);
    piechartView->setRenderHint(QPainter::Antialiasing);

    // 显示图像
    piechartView->chart()->addSeries(pieseries);
    piechartView->chart()->legend()->setAlignment(Qt::AlignBottom);
    piechart->setTitle("位标器完成比例");
//        piechartView->chart()->legend()->hide();
    piechart->setFont(QFont("Arial", 6));
    piechartView->chart()->setTheme(QChart::ChartThemeBlueCerulean);
    piechartView->resize(ui->gview->size());
    piechartView->show();

}

MainWindow::~MainWindow()
{
    delete ui;
}

实现效果:
在这里插入图片描述

2 Item Widget控件的简单使用

2.1 Tree Widget的基本操作

tree widget的操作包括设计条目和内容等其他操作
创建各个等级的栏目的顺序
注意创建子列表的操作
其他操作包括:对字体颜色修改、折叠或者展开状态

1、在Qt designer界面设计tree widget并命名
2、在界面的.h文件中添加tree widget的类
3、在界面的.cpp文件中对其进行操作

1、在界面中设计tree widget 其中变量名为 treew

2、在.h文件中添加#include <QTreeWidgetItem>,只需要添加头文件即可

3、在.cpp文件对tree widget进行操作

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 代码在此后面添加

    // 创建treewidget显示层级关系和文本数据的表头和框架
    // 1、对树状条进行连接,设置标签列的名称
    ui->treew->setHeaderLabels(QStringList()<<"第一列"<<"第二列"<<"第三列"<<"第四列");
    ui->treew->setSelectionMode(QAbstractItemView::ExtendedSelection);

    // 2、设置列宽
    ui->treew->setColumnWidth(0, 300);
    ui->treew->setColumnWidth(1, 100);
    ui->treew->setColumnWidth(2, 100);
    ui->treew->setColumnWidth(3, 100);

    // 3.1、创建1级下拉栏
    QTreeWidgetItem* item_0=new QTreeWidgetItem(QStringList()<<"我是一级下拉栏");
    ui->treew->addTopLevelItem(item_0);

    // 3.2、创建2级目录,并添加到1级栏的子栏
    QTreeWidgetItem* item_1 = new QTreeWidgetItem(QStringList()<<"我是二级下拉栏");
    item_0->addChild(item_1);

    // 3.3、创建3级目录
    QTreeWidgetItem* item_2 = new QTreeWidgetItem(QStringList()<<"我是三级栏目");
    item_1->addChild(item_2);

    // 3.4、创建4级目录
    QTreeWidgetItem* item_3 = new QTreeWidgetItem(QStringList()<<"我是四级栏目");
    item_2->addChild(item_3);

    // Tips:小技巧,将控件添加进容器,方便后续循环设置行列值
    QVector<QTreeWidgetItem*> item_list = {item_0,item_1,item_2,item_3};

    // 4、更新treewidget各个栏上的数值,值得注意的是setdata(列,行,数据),对于某一行的数据,默认行都是0
    //  即本例中i表示行,setData的1,2,3表示列,第0列被栏目名称占据
    //  设置字体颜色为红色,即rgb为255,0,0
    for(int i = 0; i < 4; ++i){
        item_list[i]->setData(1,0,QVariant(i));
        item_list[i]->setTextColor(1,QColor(255, 0, 0));
        item_list[i]->setData(2,0,QVariant(i+1));
        item_list[i]->setTextColor(2,QColor(255, 0, 0));
        item_list[i]->setData(3,0,QVariant(i+2));
        item_list[i]->setTextColor(3,QColor(255, 0, 0));
    }

    // 5、将treewidget展开
    ui->treew->expandAll();

}

MainWindow::~MainWindow()
{
    delete ui;
}

4、最后实现效果如下所示
在这里插入图片描述

2.2 Table Widget的基本操作

table widget的操作包括设计条目和内容等其他操作
创建列表对象的操作
其实列表可以作为输入传入系统
其他操作包括:对字体颜色修改、默认适应行列高度等

1、在Qt designer界面设计table widget并命名
2、在界面的.h文件中添加QTableWidgetItem的类
3、在界面的.cpp文件中对其进行操作

1、在界面中设计table widget 其中变量名为 tbw

2、在.h文件中添加#include <QTableWidgetItem>,只需要添加头文件即可

3、在.cpp文件对tree widget进行操作

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 代码在此后面添加

    // 1、设置列表表头行和内容,默认是n*4的表格
    ui->tbw->setColumnCount(4);
    ui->tbw->setHorizontalHeaderLabels(QStringList()<<"第一列"<<"第二列"<<"第三列"<<"第四列");

    // 2、表头默认适应窗口
    ui->tbw->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    ui->tbw->verticalHeader()->setVisible(false);

    // 3、设置行的数量为10行
    ui->tbw->setRowCount(10);

    //  4.1、更新行上的内容,行数10
    for(int i = 0; i < 10; ++i){
        // 4.2、更新每列内容,共有4列
        for(int j = 0; j < 4; ++j){
            // 4.3、新建table的item,构造函数new里赋值,即设计了表格的内容
            QTableWidgetItem* temp_item = new QTableWidgetItem(QString::number(i)+","+QString::number(j));
            // 4.4、将子项item按照行列位置的关系添加到widget里
            ui->tbw->setItem(i,j,temp_item);
            // 4.5、主题设置,包括纯色背景设置字体颜色,居中显示
            temp_item->setTextColor(QColor(255, 0, 0));
            ui->tbw->item(i,j)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
        }
    }


}

MainWindow::~MainWindow()
{
    delete ui;
}

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值