QT第二天

一、QMainWindow

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets 又称为浮动窗口)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。

在这里插入图片描述

菜单栏最多只能有一个工具栏可以有多个

状态栏最多只能有一个铆接部件(浮动窗口)可以有多个

!!!可以有多个的有add,只能有一个的只有set!!!

1.1 菜单栏(最多只能有一个)

头文件:#include

1.1.1创建菜单栏

//菜单栏创建 不需要要放在对象树上,因为源码已经放在对象树上了
QMenuBar * bar = menuBar();
//将菜单栏放入窗口中
setMenuBar(bar);

1.1.2 创建菜单

//创建菜单
QMenu * fileMenu = bar->addMenu("文件");
QMenu * editMenu = bar->addMenu("编辑");

1.1.3 创建菜单项

//创建菜单项
//fileMenu->addAction("新建"); 
//上面这样也行,但是为了接一下,返回QAction类型
QAction * newAction = fileMenu->addAction("新建");

1.1.4 添加分隔符

//添加分隔符
fileMenu->addSeparator();
//fileMenu->addAction("打开");
QAction * openAction =fileMenu->addAction("打开");

1.2 工具栏(可以有多个)

头文件:#include

1.2.1 工具栏

//工具栏可以有多个
QToolBar * toolBar = new QToolBar(this);
addToolBar(Qt::LeftToolBarArea,toolBar);

1.2.2 后期设置只允许左右停靠

toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);

1.2.3 设置浮动

//设置浮动
toolBar->setFloatable(false);

1.2.4 设置移动

//设置移动
toolBar->setMovable(false);

1.2.5工具栏中可以设置内容

//工具栏中可以设置内容
toolBar->addAction(newAction);
//添加分割线
toolBar->addSeparator();
toolBar->addAction(openAction);

1.2.6 工具栏中添加按钮(控件)

//工具栏中添加按钮(控件)
QPushButton * btn = new QPushButton("aa",this);
toolBar->addWidget(btn);

1.3 状态栏(最多一个)

头文件:#include

    QStatusBar * stBar = statusBar();
    //设置到窗口中
    setStatusBar(stBar);
    //放标签控件
    QLabel * label = new QLabel("提示的信息",this);
    stBar->addWidget(label);
 
    QLabel * label2 = new QLabel("右侧提示的信息",this);
    stBar->addPermanentWidget(label2);

QLabel的头文件:#include

1.4 铆接部件(浮动窗口) (可以有多个)

QDockWidget * dockWidget = new QDockWidget("浮动",this);
addDockWidget(Qt::BottomDockWidgetArea,dockWidget);

//设置后期停靠区域,只允许上下
dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

//设置中心部件
QTextEdit * edit = new QTextEdit(this);
setCentralWidget(edit);

1.5 整体代码和效果

#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QDebug>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //重置窗口的大小
    resize(600,400);

    /************************
     *一、菜单栏
    **************************/
    //菜单栏 只能 最多有一个
    //菜单栏创建 不需要要放在对象树上,因为源码已经放在对象树上了
    QMenuBar * bar = menuBar();
    //将菜单栏放入窗口中
    setMenuBar(bar);

    //创建菜单
    QMenu * fileMenu = bar->addMenu("文件");
    QMenu * editMenu = bar->addMenu("编辑");

    //创建菜单项
    //fileMenu->addAction("新建");
    QAction * newAction = fileMenu->addAction("新建");
    //添加分隔符
    fileMenu->addSeparator();
    //fileMenu->addAction("打开");
    QAction * openAction =fileMenu->addAction("打开");

    /************************
     *二、工具栏
    **************************/
    //工具栏 可以有多个
    QToolBar * toolBar = new QToolBar(this);
    addToolBar(Qt::LeftToolBarArea,toolBar);

    //后期设置 只允许 左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);

    //设置浮动
    toolBar->setFloatable(false);

    //设置移动
    toolBar->setMovable(false);

    //工具栏中可以设置内容
    toolBar->addAction(newAction);
    //添加分割线
    toolBar->addSeparator();
    toolBar->addAction(openAction);

    //工具栏中添加按钮(控件)
    QPushButton * btn = new QPushButton("aa",this);
    toolBar->addWidget(btn);

    /************************
     *三、状态栏,最多有一个
    **************************/
    QStatusBar * stBar = statusBar();
    //设置到窗口中
    setStatusBar(stBar);
    //放标签控件
    QLabel * label = new QLabel("提示的信息",this);
    stBar->addWidget(label);

    QLabel * label2 = new QLabel("右侧提示的信息",this);
    stBar->addPermanentWidget(label2);

    /************************
     *四、铆接部件(浮动窗口) 可以有多个
    **************************/
    QDockWidget * dockWidget = new QDockWidget("浮动",this);
    addDockWidget(Qt::BottomDockWidgetArea,dockWidget);

    //设置后期停靠区域,只允许上下
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

    //设置中心部件
    QTextEdit * edit = new QTextEdit(this);
    setCentralWidget(edit);

}

MainWindow::~MainWindow()
{
}

在这里插入图片描述

二、可视化设计

2.1 基本步骤

1.新建时勾选 generate from

在这里插入图片描述

2.点击mainwindow.ui进入设计界面

在这里插入图片描述

3.菜单栏只能有一个,直接输入名字就行

4.菜单项输入的时候只能输入英文,然后在text中修改成中文

在这里插入图片描述

5.添加铆接(悬浮)部件

在这里插入图片描述

允许悬浮位置

在这里插入图片描述

6.添加核心部件

在这里插入图片描述

2.2 代码

1.添加资源,右键到代码所在的文件,把image复制到文件夹下

在这里插入图片描述

2.右键羡慕,点击add new,添加Qt source

在这里插入图片描述

生成的res.qrc中 res为取的名字,qrc是Qt下面资源的后缀

3.open in edit

在这里插入图片描述

4.接着先添加前缀,再添加资源,把需要的图片加入

在这里插入图片描述

5.代码中设置

在这里插入图片描述

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //ui->actionnew->setIcon(QIcon("C:/Users/lenovo/Desktop/资料-qt从入门到实战/day2资料/Doc/Image/Luffy.png"));

    //使用添加Qt资源 ": + 前缀名 + 文件名"
    ui->actionnew->setIcon(QIcon(":/Image/Luffy.png"));
    ui->actionopen->setIcon(QIcon(":/Image/LuffyQ.png"));
}

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


三、对话框QDialog

3.1 分类

整体代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);


    //点击新建按钮 弹出一个对话框
    connect(ui->actionnew,&QAction::triggered,[=](){
        //对话框 分类
        //模态对话框(不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口进行操作)
        //1.模态创建 阻塞
//        QDialog dlg(this);
//       dlg.resize(200,100);
//        dlg.exec();
//        qDebug()<<"模态对话框弹出了";

        //2.非模态对话框
        /*
        2.1、为了窗口不会一闪而过,要创建在堆区
        2.2、因为放在对象树中,只有整体窗口关闭,才会释放,如果一直点会堆区内存泄漏
        */
        QDialog * dlg2 = new QDialog(this);
        dlg2->resize(300,200);
        dlg2->show();
        //为了不内存泄漏
        dlg2->setAttribute(Qt::WA_DeleteOnClose); //55号属性
        qDebug()<<"非模态对话框弹出了";
    });
}

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

3.1.1 模态对话框 不可以对他窗口进行操作

QDialog  dlg(this)
dlg.exec();  //阻塞

3.1.2 非模态对话框 可以对其他窗口进行操作

1.防止一闪而过

2.防止内存泄漏

//2.非模态对话框
/*
2.1、为了窗口不会一闪而过,要创建在堆区
2.2、因为放在对象树中,只有整体窗口关闭,才会释放,如果一直点会堆区内存泄漏
 */
QDialog * dlg2 = new QDialog(this);
dlg2->resize(300,200);
dlg2->show();
//为了不内存泄漏
dlg2->setAttribute(Qt::WA_DeleteOnClose); //55号属性
qDebug()<<"非模态对话框弹出了";

3.2 标准对话框-信息对话框

QMessageBox静态成员函数 创建对话框

3.2.1 错误对话框

//错误对话框
QMessageBox::critical(this,"critical","错误");

3.2.2 信息对话框

//信息对话框
QMessageBox::information(this,"info","信息");

3.2.3 提问对话框

//提问对话框
//参数1 父亲、 参数2 标题 、参数3 提示内容 、参数4 按键类型、 参数5 默认关联回车按键
QMessageBox::question(this,"quess","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel);

如果想判断是保存还是取消,可以这样:

if(QMessageBox::Save==QMessageBox::question(this,"quess","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel))
{
    qDebug()<<"选择的是保存";
}
else
{
    qDebug()<<"选择的是取消";
}

3.2.4 警告对话框

//警告对话框
QMessageBox::warning(this,"warning","警告");

3.3 标准对话框 - 颜色对话框

//颜色对话框
QColor color= QColorDialog::getColor(QColor(255,0,0));
qDebug()<<"r = "<<color.green()<<"b = "<<color.blue();

3.4 标准对话框 - 文件对话框

//文件对话框 参数1 父亲 参数2 标题 参数3 默认打开路径 参数4 过滤文件格式
//返回值是选取的路径
QString str = QFileDialog::getOpenFileName(this,"打开文件","C:/Users/lenovo/Desktop","(*.txt)");
qDebug()<<str;

3.5 标准对话框 - 字体对话框

bool flag;
QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));
qDebug()<<"字体:"<<font.family().toUtf8().data()<<"字号:"<<font.pointSize()<<"是否加粗:"<<font.bold()<<"是否倾斜:"<<font.italic();

四、布局管理器

4.1 实现登陆窗口

在这里插入图片描述

并且窗口固定了大小

4.2 利用布局方式 给窗口进行美化

如果不固定大小的时候,实现拖拽放大窗口的会自动跟随者变

4.3 选取 widget 进行布局 ,水平布局、垂直布局、栅格布局

为了让对齐使用栅格布局

4.4 给用户名、密码、登陆、退出按钮进行布局

密码设置为不明文形式,这样设置

在这里插入图片描述

可视化里面设置固定大小,把最大最小设置一样

在这里插入图片描述

4.5 默认窗口和控件之间 有9间隙,可以调整 layoutLeftMargin

4.6 利用弹簧进行布局

Horizontal Spacer

Vertical Spacer

在这里插入图片描述

如果不想一个widget的框太大,可以设置sizePolicy的垂直策略,设为固定值

在这里插入图片描述

五、控件

5.1 按钮组

5.1.1 QPushButton 常用按钮

5.1.2 QToolButton 工具按钮 用于显示图片,如图想显示文字,修改风格:toolButtonStyle , 凸起风格autoRaise

(1)先根据二可视化设计中把资源加入,然后在Icon中添加资源,添加图片,如果想要更改图片的大小,可以点击IconSize

在这里插入图片描述

(2)写文字,但是为了显示,下面的toolButtonStyle也要改成ToolButtonTextBesideIcon

在这里插入图片描述

在这里插入图片描述

把autoRaise点上,就能实现类似QQ点击头像那种功能

5.1.3 radioButton 单选按钮,设置默认 ui->rBtnMan->setChecked(true); checkbox多选按钮,监听状态,2 选中 1 半选 0 未选中

(1)单选按钮,如果想分组,可以用Group Box

在这里插入图片描述

在这里插入图片描述

(2)结合代码

首先:改名

在这里插入图片描述

写代码:

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //设置单选的按钮 男默认选中
    ui->rBtnMan->setChecked(true);

    //选中女后 打印信息
    connect(ui->rBtnWoman,&QRadioButton::clicked,this,[=](){

        qDebug()<<"选中了女";
    });


}

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

5.1.4 checkbox多选按钮,监听状态,2 选中 1 半选 0 未选中

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QCheckBox>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);


    //多选按钮 2是选中 0是未选中 1是半选但是要把tristate勾上
    connect(ui->cBox,&QCheckBox::stateChanged,[=](int state){
        qDebug()<< state;
    });


}

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


在这里插入图片描述

5.2 QlistWidget 列表容器

5.2.1 QListWidget 一行内容

//利用listWidget写诗
QListWidgetItem * item = new QListWidgetItem("锄禾日当午");
//将一行诗放到listWidget控件中
ui->listWidget->addItem(item);
//设置居中
item->setTextAlignment(Qt::AlignHCenter);

5.2.2 可以利用addItems一次加入多行

//QStringList QList<string>
QStringList list;
list<<"锄禾日当午"<<"汗滴禾下土"<<"谁知盘中餐"<<"粒粒皆辛苦";
ui->listWidget->addItems(list);

5.2.3 补充:QStringlist

QStringList类提供字符串列表。
QStringList继承自QList < QString >。与QList一样,QStringList是隐式共享的。它提供了快速的基于索引的访问,以及快速插入和删除。将字符串列表作为值参数传递是快速和安全的。

5.3 QTreeWidget 树控件

5.3.1 设置头

首先在设计中添加 TreeWIdget,然后设置水平布局,默认的objectName为treeWidget

在这里插入图片描述

然后代码控制:

(1)设置水平头

//treeWidget树控件的使用
//设置水平头
ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");

QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList()<<"力量");

(2)加载顶层的节点

//加载顶层的节点
ui->treeWidget->addTopLevelItem(liItem);

(3)追加子节点

//追加子节点
QStringList heroL1;
heroL1<<"刚被猪"<<"前排坦克,能在吸收伤害的同时造成可观的范围输出";
QTreeWidgetItem * l1 = new QTreeWidgetItem(heroL1);
liItem->addChild(l1);
QStringList heroL2;
heroL2 << "船长" << "前排坦克,能肉能输出能控场的全能英雄";
QTreeWidgetItem * l2 = new QTreeWidgetItem(heroL2);
liItem->addChild(l2);

整体代码:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //treeWidget树控件的使用
    //设置水平头
    ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");

    QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList()<<"力量");
    QTreeWidgetItem * minItem = new QTreeWidgetItem(QStringList()<<"敏捷");
    QTreeWidgetItem * zhiItem = new QTreeWidgetItem(QStringList()<<"智力");

    //加载顶层的节点
    ui->treeWidget->addTopLevelItem(liItem);
    ui->treeWidget->addTopLevelItem(minItem);
    ui->treeWidget->addTopLevelItem(zhiItem);

    //追加子节点
    QStringList heroL1;
    heroL1<<"刚被猪"<<"前排坦克,能在吸收伤害的同时造成可观的范围输出";
    QTreeWidgetItem * l1 = new QTreeWidgetItem(heroL1);
    liItem->addChild(l1);
    QStringList heroL2;
    heroL2 << "船长" << "前排坦克,能肉能输出能控场的全能英雄";
    QTreeWidgetItem * l2 = new QTreeWidgetItem(heroL2);
    liItem->addChild(l2);

    QStringList heroM1;
    heroM1 << "月骑" << "中排物理输出,可以使用分裂利刃攻击多个目标";
    QTreeWidgetItem * M1 = new QTreeWidgetItem(heroM1);
    minItem->addChild(M1);
    QStringList heroM2;
    heroM2 << "小鱼人" << "前排战士,擅长偷取敌人的属性来增强自身战力";
    QTreeWidgetItem * M2 = new QTreeWidgetItem(heroM2);
    minItem->addChild(M2);

    QStringList heroZ1;
    heroZ1 << "死灵法师" << "前排法师坦克,魔法抗性较高,拥有治疗技能";
    QTreeWidgetItem * Z1 = new QTreeWidgetItem(heroZ1);
    zhiItem->addChild(Z1);
    QStringList heroZ2;
    heroZ2 << "巫医" << "后排辅助法师,可以使用奇特的巫术诅咒敌人与治疗队友";
    QTreeWidgetItem * Z2 = new QTreeWidgetItem(heroZ2);
    zhiItem->addChild(Z2);
}

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

效果:

在这里插入图片描述

5.4 QTableWidget 控件

5.4.1 设置列数和设置行数

//设置列数
ui->tableWidget->setColumnCount(3);

//设置列数
ui->tableWidget->setRowCount(4);

5.4.2 设置表头

//设置水平表头
ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");

5.4.3 设置正文

方法一:

//设置正文
ui->tableWidget->setItem(0,0,new QTableWidgetItem("亚瑟"));

方法二:

QStringList nameList;
nameList<<"亚瑟"<<"赵云"<<"张飞"<<"关羽"<<"花木兰";
//QList<QString>   等价于  QStringList
QList<QString> sexList;
sexList<<"男"<<"男"<<"男"<<"男"<<"女";
for(int i=0;i<5;i++)
{
    int col = 0;
    ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));
    //也可以用中括号,越界直接挂了;用at越界会抛出异常
    ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));
    //int 转 QString
    ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(18)));
}

5.4.4 补充:QStringList 和QList < string>

1.两个效果一样,使用方法

QStringList nameList;
nameList<<"亚瑟"<<"赵云"<<"张飞"<<"关羽"<<"花木兰";
//QList<QString>   等价于  QStringList
QList<QString> sexList;
sexList<<"男"<<"男"<<"男"<<"男"<<"女";

2.用中括号,越界直接挂了;用at越界会抛出异常

QStringList nameList;
nameList<<"亚瑟"<<"赵云"<<"张飞"<<"关羽"<<"花木兰";
//QList<QString>   等价于  QStringList
QList<QString> sexList;
sexList<<"男"<<"男"<<"男"<<"男"<<"女";
for(int i=0;i<5;i++)
{
    int col = 0;
    ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));
    //也可以用中括号,越界直接挂了;用at越界会抛出异常
    ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));
    //int 转 QString
    ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(18)));
}

5.4.5 整体代码

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //TableWidget控件
    //设置列数
    ui->tableWidget->setColumnCount(3);
    //设置水平表头
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
    //设置列数
    ui->tableWidget->setRowCount(4);

    //设置正文
//    ui->tableWidget->setItem(0,0,new QTableWidgetItem("亚瑟"));

    QStringList nameList;
    nameList<<"亚瑟"<<"赵云"<<"张飞"<<"关羽"<<"花木兰";
    //QList<QString>   等价于  QStringList
    QList<QString> sexList;
    sexList<<"男"<<"男"<<"男"<<"男"<<"女";
    for(int i=0;i<5;i++)
    {
        int col = 0;
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));
        //也可以用中括号,越界直接挂了;用at越界会抛出异常
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));
        //int 转 QString
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(18)));
    }

}

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

5.5 其他控件

5.5.1 Scroll Area

在这里插入图片描述

比如在里面加很多的QPushbutton后,就会有一个滑动效果

在这里插入图片描述

5.5.2 Tool Box

在这里插入图片描述

在这里插入图片描述

类似于QQ的分组

在这里插入图片描述

5.5.3 Tab Box

在这里插入图片描述

类似于搜狗浏览器网页切换的一个效果

在这里插入图片描述

5.3.4 Stacked Widget

在这里插入图片描述

可以通过小三角切换,显示不同的,但是在运行的时候,三角不可见,得自己建按钮控制,比如右边三个

在这里插入图片描述

控制代码:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //栈控件使用

    //设置默认定位 scrollArea
    ui->stackedWidget->setCurrentIndex(1);

    //scrollArea 按钮
    connect(ui->btn_scrollAreas,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(1);
    });

    //toolbox 按钮
    connect(ui->btn_ToolBox,&QPushButton::clicked,[=]{
        ui->stackedWidget->setCurrentIndex(0);
    });

    //toolbox 按钮
    connect(ui->btn_TableWidget,&QPushButton::clicked,[=]{
        ui->stackedWidget->setCurrentIndex(2);
    });


}

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

5.3.5 Combo BOx 下拉框

在这里插入图片描述

//下拉框
ui->comboBox->addItem("奔驰");
ui->comboBox->addItem("宝马");
ui->comboBox->addItem("拖拉机");

如果想用按钮控制

//点击按钮选中拖拉机 选项
connect(ui->btn_select,&QPushButton::clicked,[=](){
    ui->comboBox->setCurrentIndex(2);
    //或者
    //ui->comboBox->setCurrentText("拖拉机");
});

5.3.6 QLabel 显示图片和动图

先添加图片资源

//利用 QLable显示图片
ui->lb_Image->setPixmap(QPixmap(":/Image/butterfly.png"));

//利用 QLabel 显示动态图
QMovie * movie = new QMovie(":/Image/mario.gif");
ui->lbl_Movie->setMovie(movie);

//播放动图
movie->start();

,={
ui->stackedWidget->setCurrentIndex(1);
});

//toolbox 按钮
connect(ui->btn_ToolBox,&QPushButton::clicked,[=]{
    ui->stackedWidget->setCurrentIndex(0);
});

//toolbox 按钮
connect(ui->btn_TableWidget,&QPushButton::clicked,[=]{
    ui->stackedWidget->setCurrentIndex(2);
});

}

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




### 5.3.5 Combo BOx 下拉框

[外链图片转存中...(img-34bv5u7v-1639574510186)]

```cpp
//下拉框
ui->comboBox->addItem("奔驰");
ui->comboBox->addItem("宝马");
ui->comboBox->addItem("拖拉机");

如果想用按钮控制

//点击按钮选中拖拉机 选项
connect(ui->btn_select,&QPushButton::clicked,[=](){
    ui->comboBox->setCurrentIndex(2);
    //或者
    //ui->comboBox->setCurrentText("拖拉机");
});

5.3.6 QLabel 显示图片和动图

先添加图片资源

//利用 QLable显示图片
ui->lb_Image->setPixmap(QPixmap(":/Image/butterfly.png"));

//利用 QLabel 显示动态图
QMovie * movie = new QMovie(":/Image/mario.gif");
ui->lbl_Movie->setMovie(movie);

//播放动图
movie->start();

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值