04 Qt常用开发控件详解

目录

01 Qt控件详解:Layouts/Spacers

001 QtDesign设计

002  代码实现

0001  Grid Layout(网格/栅格布局)

0002 Form Layout(表单布局)

 02 Qt控件详解:Buttons

 001 Push Button(命令按钮)

 002 Tool Button(工具按钮)

003 Radio Button(单选框按钮) 

004 Check Box(复选框按钮)

005 Command Link Button (命令链接按钮)

 006  Dialog Button Box(按钮盒)

 03 控件详解:Containers

001 Group Box(组合框)

002 Scroll Area(滚动区域)

003 Tab Widget(标签小部件) 

004 Frame(框架)  

005 Dock Widget(停靠窗口部件/浮动窗口)  

 04 控件详解:Item Views(Qt项目视图)

001 List View(停靠窗口部件/浮动窗口)  

 002 Tree View(树视图)  

003 Table View(表视图)  

  05 控件详解:Item Widgets(Qt项目部件)

001 List Widget(清单控件)  

002 Tree Widget(树形控件)  

003 Table Widget(表控件)  

06 控件详解:Input Widgets

001 Combobox Box(编辑组合框)

002 Font Combo Box(字体组合框)

003 Line Edit(行编辑框)

 004 Plain Text Edit(多行文本编辑器)

005 Spin Box(整数旋转框) 

006 Time Edit、Date Edit、Date/Time Edit(时间控件)

007 QScrollBar(水平和垂直滚动控件)

 008 Key Sequence Edit(快捷键控件)

07 控件详解:Distplay Widgets 

001 Label(标签)

002 Text Browser(文本浏览器)

003 Progress Bar(进度条)

 004 LCD Number(LCD数字控件)


01 Qt控件详解:Layouts/Spacers

001 QtDesign设计

002  代码实现

0001  Grid Layout(网格/栅格布局)

此控件夫分为行和列组成,能够将控件放入一个网状栅格中,每个控件占一格或多行多列。

案例:

(1)创建widget新项目

(2)修改"widget.h"文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QGridLayout>            //网格控件头文件
#include <QLabel>                 //标签控件头文件
#include <QPushButton>            //命令按钮控制头文件

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    QGridLayout *pGrid_layouts;
    QPushButton *button1;
    QPushButton *button2;
    QPushButton *button3;
    QPushButton *button4;
};
#endif // WIDGET_H

(3)修改"widget.cpp"文件

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    button1 = new QPushButton(this);                //生成一个命令按钮并指向button1
    button1 -> setText("第一区:顶部菜单栏选项");       //设置button1按钮文本显示
    button1 -> setFixedHeight(40);                  //设置button1按钮固定高度
    button1 ->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);   //设置按钮随布局缩放变化形式

    button2 = new QPushButton(this);
    button2 -> setText("第二区:侧边栏选项");
    button2 -> setFixedWidth(150);                  //设置button2按钮固定宽度
    button2 ->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

    button3 = new QPushButton(this);
    button3 -> setText("第三区:底部选项");
    button3 -> setFixedHeight(150);
    button3 ->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

    button4 = new QPushButton(this);
    button4 -> setText("第四区:子窗体选项");
    button4 ->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

    pGrid_layouts = new QGridLayout();              //创建布局
    //设置布局左侧 顶部 右侧 底部边距

    pGrid_layouts->setContentsMargins(0,0,0,0);


//    pGrid_layouts ->setMargin(30);                     //设置控件与其他对象之间左右距离30,Qt6中此命令已无效
    pGrid_layouts ->setSpacing(40);                    //设置控件与其他对象之间上下距离40
//    pGrid_layouts ->setSpacing(0);                     //设置布局间隔

    //显示位置
    /*
    addWidget(参数1,参数2,参数3,参数4,参数5,参数6)
    参数1:要插入的子布局对象
    参数2:插入的开始行
    参数3:插入的开始列
    参数4:占用的行数
    参数5:占用的列数
    参数6:指定对齐方式
    */
    pGrid_layouts -> addWidget(button1,0,1);
    pGrid_layouts -> addWidget(button2,0,0,3,1);
    pGrid_layouts -> addWidget(button3,2,1);
    pGrid_layouts -> addWidget(button4,1,1);
    setLayout(pGrid_layouts);
}

Widget::~Widget()
{
}

0002 Form Layout(表单布局)

案例:

(1)创建widget新项目

(2)修改"widget.cpp"文件

#include "widget.h"
#include <QFormLayout>
#include <QLineEdit>


Widget::Widget(QWidget *parent)
    : QWidget(parent)
{    setFixedSize(250,200);             //设置窗口大小
     //创建表单布局指针
     QFormLayout *qLayout = new QFormLayout(this);
     QLineEdit *le1 = new QLineEdit();          //输入学校
     QLineEdit *le2 = new QLineEdit();          //输入学号
     QLineEdit *le3 = new QLineEdit();          //输入姓名

     qLayout -> addRow("学校",le1);
     qLayout -> addRow("学号",le2);
     qLayout -> addRow("姓名",le3);
     qLayout -> setSpacing(8);             //设置控件之间的间隔

//     qLayout -> setRowWrapPolicy(QFormLayout::WrapAllRows);      //WrapAllRows将标签显示在单行编辑框上面
     qLayout -> setRowWrapPolicy(QFormLayout::WrapLongRows);     //WrapAllRows将标签与单行编辑框显示在同一行
     qLayout -> setLabelAlignment(Qt::AlignLeft);                //设置标签对齐方式为左对齐
     setWindowTitle("表单布局测试案例");
}

Widget::~Widget()
{
}

 02 Qt控件详解:Buttons

 001 Push Button(命令按钮)

案例:

(1)创建MainWindowt新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>        //引入QPushButton类对应的头文件

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    //声明两个QPushButton对象
    QPushButton *pb1,*pb2;

private slots:
    //声明对象pb1、pb2对应的槽函数
    void pushbutton1_clicked();
    void pushbutton2_clicked();
};
#endif // MAINWINDOW_H

 (3)修改"mainwindow.cpp"文件

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setGeometry(300,150,500,300);      //设置窗口位于显示器的位置(4个参数确定窗口左上角点,右下角点位于电脑屏幕的位置)

    pb1 = new QPushButton("命令按钮1",this);         //实例化按钮
    pb2 = new QPushButton("命令按钮2",this);         //实例化按钮

    //设置两个QPushButton对象的坐标位置
    pb1 -> setGeometry(20,20,150,50);
    pb2 -> setGeometry(20,90,150,50);

    //与信号槽函数链接
    connect(pb1,SIGNAL(clicked()),this,SLOT(pushbutton1_clicked()));
    connect(pb2,SIGNAL(clicked()),this,SLOT(pushbutton2_clicked()));
}

MainWindow::~MainWindow()
{

}


//对象pb1,pb2的槽函数
void MainWindow::pushbutton1_clicked()
{
    //执行槽函数将窗口背景改为黄色
    this->setStyleSheet("QMainWindow{background-color:rgba(255,255,0,100%);}");
}
void MainWindow::pushbutton2_clicked()
{
    this->setStyleSheet("QMainWindow{background-color:rgba(255,0,0,100%);}");
}

(4)结果演示 

 002 Tool Button(工具按钮)

案例:

(1)创建MainWindowt新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QToolBar>           //引入QToolBar类
#include <QToolButton>        //引入QToolButton类

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    //声明一个QToolButton对象和QToolBar对象
    //这两个对象是集合与元素之间的关系,工具条是用来放置工具按钮的
    QToolBar *tbar;
    QToolButton *tbutton;

};
#endif // MAINWINDOW_H

 (3)修改"mainwindow.cpp"文件

#include "mainwindow.h"
#include <QApplication>
#include <QStyle>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //设置窗口运行位置
    this ->setGeometry(300,150,500,300);

    //将QToolBar对象进行实例化
    tbar = new QToolBar(this);
    tbar -> setGeometry(20,20,200,50);        //设置按钮的位置

    //将QStyle类对象进行实例化,主要目的是设置风格,图标是系统自带
    QStyle *sty = QApplication::style();
    QIcon ico = sty->standardIcon(QStyle::SP_TitleBarContextHelpButton);      //将系统默认图标加载进来

    //将QtoolButton对象进行实例化
    tbutton = new QToolButton();
    tbutton->setIcon(ico);
    tbutton->setText("系统帮助提示");           //设置将要显示文本
    //调用setToolButtonStyle函数设置tbutton样式,设置文本在图标下方
    tbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    //将tbutton添加到tbar工具条中

    tbar->addWidget(tbutton);
}

MainWindow::~MainWindow()
{
}

(4)结果演示 

003 Radio Button(单选框按钮) 

案例:

(1)创建MainWindowt新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QRadioButton>


class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    //声明2个QRadioButton对象radb1,radb2
    QRadioButton *radb1,*radb2;
};
#endif // MAINWINDOW_H

 (3)修改"mainwindow.cpp"文件

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //设置窗口运行位置
    this ->setGeometry(300,150,500,300);
//    this ->setStyleSheet("QMainWindow{background-color:rgba(255,0,0,100%);}");

    //将QRadioButton类的两个对象进行实例化
    radb1 = new QRadioButton(this);
    radb2 = new QRadioButton(this);

    //设置两个QRadioButton对象位置
    radb1->setGeometry(20,20,150,40);
    radb2->setGeometry(20,80,150,40);

    //设置两个单选框按钮文本
    radb1->setText("选择按钮1");
    radb2->setText("选择按钮2");

    //设置命令按钮默认选中值Checked false true
    radb1 -> setChecked(true);
    radb2 -> setChecked(false);

}

MainWindow::~MainWindow()
{
}

(4)结果演示 

004 Check Box(复选框按钮)

案例:

(1)创建MainWindowt新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QCheckBox>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    //声明1个QCheckBox对象
    QCheckBox *cb;
private slots:
    //声明QCheckBox槽函数,在操作过程当中并且带参数传递,通过这个参数接收信号
    void checkboxstate(int);


};
#endif // MAINWINDOW_H

 (3)修改"mainwindow.cpp"文件

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //设置窗口运行位置
    this ->setGeometry(300,150,500,300);
    this ->setStyleSheet("QMainWindow{background-color:rgba(85,85,54,100%);}");

    //实例化操作
    cb = new QCheckBox(this);
    cb -> setGeometry(30,50,250,50);

    cb -> setCheckState(Qt::Checked);   //初始化三态复选框状态:Checked
    cb -> setText("初始化状态为:Checked状态");
    cb -> setTristate();         //开启三台模式,必须开启,否则只有两种状态(Checked和Unchecked)
    connect(cb,SIGNAL(stateChanged(int)),this,SLOT(checkboxstate(int)));
}

MainWindow::~MainWindow()
{
}


void MainWindow::checkboxstate(int istate)
{
   //判断checkbox的状态
    switch(istate)
    {
        case Qt::Checked:   //选中状态
            cb -> setText("选中状态:OK");
            break;
        case Qt::Unchecked:   //未选中状态
            cb -> setText("未选中状态:NO");
            break;
        case Qt::PartiallyChecked:   //半选中状态
            cb -> setText("半选中状态:OK");
            break;
    }
}

(4)结果演示 

005 Command Link Button (命令链接按钮)

案例:

(1)创建MainWindowt新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QCommandLinkButton>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    //声明一个QCommandLinkButton对象
    QCommandLinkButton *clb;

private slots:
    //声明槽函数,使用鼠标点击clb后触发
    void clbClicked();

};
#endif // MAINWINDOW_H

 (3)修改"mainwindow.cpp"文件

#include "mainwindow.h"

//点击QCommandLinkButton会打开网址,所以需要引入以下两个头文件
#include <QDesktopServices>      //引入桌面服务
#include <QUrl>                  //引入URL

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //设置窗口运行位置
    this ->setGeometry(400,300,500,300);
    this ->setStyleSheet("QMainWindow{background-color:rgba(85,85,54,100%);}");

    clb = new QCommandLinkButton("testclb","clicked testclb",this);
    clb ->setGeometry(50,100,250,60);

    connect(clb,SIGNAL(clicked()),this,SLOT(clbClicked()));
}

MainWindow::~MainWindow()
{
}

void MainWindow::clbClicked()
{
    //调用系统服务打开操作
    QDesktopServices::openUrl(QUrl("https://mp.youkuaiyun.com"));
}

(4)结果演示 

 006  Dialog Button Box(按钮盒)

案例:

(1)创建MainWindowt新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>
#include <QDialogButtonBox>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    //声明两个对象
    QDialogButtonBox *dbb;
    QPushButton *pb;
private slots:
    //声明槽函数
    void dbbpbClicked(QAbstractButton *);
};
#endif // MAINWINDOW_H

 (3)修改"mainwindow.cpp"文件

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //设置窗口运行位置
    this ->setGeometry(0,0,500,300);

    dbb = new QDialogButtonBox(this);
    dbb -> setGeometry(150,150,200,30);
    dbb ->addButton(QDialogButtonBox::Cancel);
    dbb ->button(QDialogButtonBox::Cancel)->setText("取消");

    pb = new QPushButton("自定义");
    //将pb添加到dbb中,并设定ButtonRole为ActionRole
    dbb ->addButton(pb,QDialogButtonBox::ActionRole);
    connect(dbb,SIGNAL(clicked(QAbstractButton*)),this,SLOT(dbbpbClicked(QAbstractButton*)));
}

MainWindow::~MainWindow()
{
}

void MainWindow::dbbpbClicked(QAbstractButton *bt)
{
    if(bt == dbb ->button(QDialogButtonBox::Cancel))
    {
        qDebug()<<"你已经点击【取消】按钮"<<Qt::endl;
    }
    else if(bt==pb)
    {
        qDebug()<<"你已经点击【自定义】按钮"<<Qt::endl;
    }
}

(4)结果演示 

 03 控件详解:Containers

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

001 Group Box(组合框)

案例:

(1)创建Widget新项目

(2)修改"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)
{
    //组合框1:gpb_1
    QGroupBox *gpb_1 = new QGroupBox("互相排斥单选按钮组1");              //创建一个组合框
    QRadioButton *rtbn_1 = new QRadioButton("RadioButton1");           //创建单选按钮
    QRadioButton *rtbn_2 = new QRadioButton("RadioButton2");
    QRadioButton *rtbn_3 = new QRadioButton("RadioButton3");
    QVBoxLayout *vbly1 = new QVBoxLayout;                              //创建一个竖直排列布局
    vbly1 -> addWidget(rtbn_1);                                        //将单选按钮添加到竖直排列布局中
    vbly1 -> addWidget(rtbn_2);
    vbly1 -> addWidget(rtbn_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);                                         //设置组合框标题为可选状态,取消可选状态后,组合框中所有内容均不可用
    gpb_3 -> setChecked(true);
    QRadioButton *rtbn_31 = new QRadioButton("RadioButton31");           //创建单选按钮
    QRadioButton *rtbn_32 = new QRadioButton("RadioButton32");
    QRadioButton *rtbn_33 = new QRadioButton("RadioButton33");
    QCheckBox *cbx4 = new QCheckBox("checkbox4");
    QVBoxLayout *vbly3 = new QVBoxLayout;
    vbly3 -> addWidget(rtbn_31);
    vbly3 -> addWidget(rtbn_32);
    vbly3 -> addWidget(rtbn_33);
    vbly3 -> addWidget(cbx4);
    gpb_3 ->setLayout(vbly3);
    cbx4 -> setChecked(true);


    //组合框4:gpb_4
    QGroupBox *gpb_4 = new QGroupBox("综合按钮组4");
    gpb_4 ->  setCheckable(true);
    gpb_4 -> setChecked(true);
    QPushButton *pn_4 = new QPushButton("PushButton4");
    QPushButton *pn_5 = new QPushButton("PushButton5");
    QPushButton *pn_6 = new QPushButton("PushButton6");

    //命令按钮添加子菜单,点击按钮后会显示该按钮下包含的可选命令
    QMenu *mu= new QMenu(this); 
    mu -> addAction("King");
    mu -> addAction("Drren");
    mu -> addAction("Mark");
    mu -> addAction("Vico");
    pn_6 ->setMenu(mu);

    QVBoxLayout *vbly4 = new QVBoxLayout;
    vbly4 -> addWidget(pn_4);
    vbly4 -> addWidget(pn_5);
    vbly4 -> addWidget(pn_6);
    gpb_4 ->setLayout(vbly4);

    QGridLayout *gdlayout = new QGridLayout;                           //创建一个栅格布局
    gdlayout -> addWidget(gpb_1,0,0,1,1);                              //将组合框添加到栅格布局0行0列位置
    gdlayout -> addWidget(gpb_2,0,1,1,1);
    gdlayout -> addWidget(gpb_3,1,0,1,1);
    gdlayout -> addWidget(gpb_4,1,1,1,1);
    this -> setLayout(gdlayout);

}

Widget::~Widget()
{
}

(4)结果演示 

002 Scroll Area(滚动区域)

案例:

(1)创建Widget新项目

(2)添加资源文件

3)修改"main.cpp"文件

#include "widget.h"

#include <QApplication>
#include <QLabel>
#include <QScrollArea>
#include <QGridLayout>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.resize(300,200);
    /*
    QScrollArea当中有很多功能继承来自于QAbstractScrollArea
    滚动条外观是否漂亮取决于当前滚动条策略
    */


    QLabel *qljpg = new QLabel;
    qljpg ->setScaledContents(true);                     //让添加进来的图片能够自适应缩放到QLabel标签大小
    QImage imagejpg(":/new/prefix1/images/1.jpg");       //导入图片
    qljpg -> setPixmap(QPixmap::fromImage(imagejpg));    //将图片添加进QLabel标签中

    QScrollArea *sArea = new QScrollArea;                //创建一个滚动区域
    //根据窗口比例显示,设置后,缩放窗口时整个滚动区域会随着窗口缩放改变大小
    sArea ->setWidgetResizable(true);
    sArea ->setAlignment(Qt::AlignCenter);             //设置滚动区域在窗口中剧中对齐

    sArea -> setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);    //设置滚动区域能够水平滚动
    sArea -> setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);     //设置滚动区域不能够竖直滚动
    sArea -> setWidget(qljpg);                           //将图片添加进滚动区域
    QGridLayout *glayout = new QGridLayout;              //新建一个栅格布局
    glayout -> addWidget(sArea);                         //在布局中添加滚动区域
    w.setLayout(glayout);                                //设置窗口布局

    w.show();
    return a.exec();
}

(4)结果演示 

003 Tab Widget(标签小部件) 

案例:

(1)创建Widget新项目

(2)修改"widget.h"文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTabWidget>
#include <QGridLayout>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
    QTabWidget *tabWidgetUI;

private slots:
    void MsgCommit();
};
#endif // WIDGET_H

(3)修改"widget.cpp"文件

#include "widget.h"
#include <QMessageBox>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    this ->setWindowTitle("标签小部件控件测试");
    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 = true;
    bool m_showtabwidgetui4 = true;

    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,"性能");
    }

    if(m_showtabwidgetui3)
    {
        QWidget *qwidget3 = new QWidget();
        tabWidgetUI -> addTab(qwidget3,"应用历史记录");
    }

    if(m_showtabwidgetui4)
    {
        QWidget *qwidget4 = new QWidget();
        tabWidgetUI -> addTab(qwidget4,"启动");
    }
}

Widget::~Widget()
{
}


void Widget::MsgCommit()
{
    QMessageBox::information(NULL,"testing","QMessageBox:命令按钮测试成功!",QMessageBox::Ok);
}

(4)结果演示 

004 Frame(框架)  

案例:

(1)创建Widget新项目(带UI)

(2)编辑UI文件并运行

(3)修改"widget.cpp"文件

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    setWindowTitle("Frame框架控件测试");
    ui->frame_1->setStyleSheet("background-color:yellow");   //设置frame1框架背景颜色
    ui->frame_2->setStyleSheet("background-color:green");

    ui->frame_1->setLineWidth(2);    //设置frame1边线宽度
    ui->frame_1->setMidLineWidth(2);
    ui->frame_1->setFrameShape(QFrame::Box);     //设置边框形状
    ui->frame_1->setFrameShadow(QFrame::Raised);     //设置边框形状


    ui->frame_2->setLineWidth(2);    //设置frame2边线宽度
    ui->frame_2->setMidLineWidth(4);
    ui->frame_2->setFrameShape(QFrame::Box);     //设置边框形状
    ui->frame_2->setFrameShadow(QFrame::Sunken);     //设置边框阴影样式

}

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

(4)结果演示 

005 Dock Widget(停靠窗口部件/浮动窗口)  

注:Qt6中,QPalette::BackGround已经废除,使用QPalette::Window代替

案例:

(1)创建MainWindowt新项目

(2)修改"mainwindow.cpp"文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDockWidget>
#include <QLabel>
#include <QComboBox>
#include <QGridLayout>
#include <QPushButton>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QDockWidget *dw = new QDockWidget("停靠窗口部件测试:Dock Widget -->Vico",this);
    //设置颜色
    QPalette pal;
    //pal.setColor(QPalette::BackGround,Qt::cyan);       //Qt6中,QPalette::BackGround已经废除,使用QPalette::Window代替
    pal.setColor(QPalette::Window,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);

    QWidget *wgt = new QWidget();
    wgt -> setLayout(glayout);
    dw -> setWidget(wgt);

    dw ->setMaximumSize(300,300);                      //设置浮动窗口大小

}

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

(4)结果演示 

 04 控件详解:Item Views(Qt项目视图)

List View清单视图
Tree View树视图
Table View树视图
Column View列视图
Undo View撤销命令视图

001 List View(停靠窗口部件/浮动窗口)  

案例:

(1)创建Widget新项目(带UI文件)

直接在UI文件中修改窗口标题为"ListView(清单视图)"。

(2)修改"widget.h"文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QListView>
#include <QStringListModel>       //字符串列表模型头文件
#include <QMessageBox>

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;

private:
    QListView *listview1;
private slots:
    void SlotClickedFunc(const QModelIndex &index);


};
#endif // WIDGET_H

(3)修改"widget.cpp"文件

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    resize(450,250);
    listview1 = new QListView(this);            //创建QListView对象
    listview1->setGeometry(20,20,240,160);      //设置控件显示位置及大小
    QStringList qlist;                               //创建数据显示清单视图
    qlist.append("运动类:篮球、足球");
    qlist.append("娱乐类:看电影、写小说、听音乐");
    qlist.append("游戏类:五子棋、扑克牌、中国象棋");
    qlist.append("旅游类:国内旅游、国外旅游");

    //使用数据列表创建数据显示模型进行实现
    QStringListModel *listmode = new QStringListModel(qlist);
    listview1 ->setModel(listmode);

    connect(listview1,SIGNAL(clicked(const QModelIndex)),this,SLOT(SlotClickedFunc(const QModelIndex)));
}

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


void Widget::SlotClickedFunc(const QModelIndex &index)
{
    QMessageBox::information(NULL,"兴趣爱好","你选择的类型为:\n"+index.data().toString());
}

 (4)结果演示 

 002 Tree View(树视图)  

案例:

(1)创建mainwindow新项目(带ui文件)

直接在ui文件中放入一个Tree View控件

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QStandardItemModel>

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;
public:
    void InitTreeViewFunc();      //初始化树控件视图
    QStandardItemModel *sItemMode;


};
#endif // MAINWINDOW_H

(3)修改"mainwindow.cpp"文件

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    InitTreeViewFunc();      //在构造函数调用树视图控件
}

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

void MainWindow::InitTreeViewFunc()
{
    //1:构造model
    sItemMode = new QStandardItemModel(ui -> treeView);
    sItemMode -> setHorizontalHeaderLabels(QStringList()<<QStringLiteral("编号")<<QStringLiteral("初中部/高中部"));

    //创建一级节点,将它加入到sItemModel;
    QList<QStandardItem*> item11;
    QStandardItem *item1 = new QStandardItem(QString::number(1));
    QStandardItem *item2 = new QStandardItem("初中部");

    item11.append(item1);
    item11.append(item2);
    sItemMode ->appendRow(item11);

    //二级节点,添加到第一个一级节点
    QList<QStandardItem*> item112;
    QStandardItem *item1121 = new QStandardItem(QString::number(2));
    QStandardItem *item1122 = new QStandardItem("一年级");
    item112.append(item1121);
    item112.append(item1122);
    item1->appendRow(item112);

    //三级节点,添加到一级节点的二级节点下
    QList<QStandardItem*> item1231;
    QStandardItem *item12311 = new QStandardItem(QString::number(3));
    QStandardItem *item12312 = new QStandardItem("一班");
    item1231.append(item12311);
    item1231.append(item12312);
    item1121->appendRow(item1231);

    QList<QStandardItem*> item1232;
    QStandardItem *item12321 = new QStandardItem(QString::number(3));
    QStandardItem *item12322 = new QStandardItem("二班");
    item1232.append(item12321);
    item1232.append(item12322);
    item1121->appendRow(item1232);

    QList<QStandardItem*> item12;
    QStandardItem *item3 = new QStandardItem(QString::number(2));
    QStandardItem *item4 = new QStandardItem("高中部");

    item12.append(item3);
    item12.append(item4);
    sItemMode ->appendRow(item12);

    //2:给QTreeView应用model
    ui ->treeView ->setModel(sItemMode);
}

(4)结果演示 

003 Table View(表视图)  

案例:

(1)创建mainwindow新项目(带ui文件)

直接在ui文件中放入一个Table View控件

(2)修改"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;
private:
    void InitTableViewFunc();
};
#endif // MAINWINDOW_H

(3)修改"mainwindow.cpp"文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStandardItemModel>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("TableView(表视图控件)");
    InitTableViewFunc();           //调用自定义函数进行初始化
}

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



void MainWindow::InitTableViewFunc()
{
    //1:添加表头,准备数据模型
    QStandardItemModel *stuMode = new QStandardItemModel();
    stuMode ->setHorizontalHeaderItem(0,new QStandardItem(QObject::tr("学号")));
    stuMode ->setHorizontalHeaderItem(1,new QStandardItem(QObject::tr("姓名")));
    stuMode ->setHorizontalHeaderItem(2,new QStandardItem(QObject::tr("性别")));
    stuMode ->setHorizontalHeaderItem(3,new QStandardItem(QObject::tr("分数")));


    //通过API函数将数据模型绑定到QTableView
    ui->tableView->setModel(stuMode);

    //设置表格列的宽度
    ui ->tableView->setColumnWidth(0,120);

    //2:添加数据信息

    stuMode -> setItem(0,0,new QStandardItem("20240601"));
    stuMode -> setItem(0,1,new QStandardItem("小明"));
    stuMode -> setItem(0,2,new QStandardItem("男"));
    stuMode -> setItem(0,3,new QStandardItem("656"));
    stuMode ->item(0,0)->setTextAlignment(Qt::AlignCenter);   //设置数据居中对齐
    stuMode ->item(0,1)->setTextAlignment(Qt::AlignCenter);
    stuMode ->item(0,2)->setTextAlignment(Qt::AlignCenter);
    stuMode ->item(0,3)->setTextAlignment(Qt::AlignCenter);

    stuMode -> setItem(1,0,new QStandardItem("20240602"));
    stuMode -> setItem(1,1,new QStandardItem("小红"));
    stuMode -> setItem(1,2,new QStandardItem("女"));
    stuMode -> setItem(1,3,new QStandardItem("689"));
    stuMode ->item(1,0)->setTextAlignment(Qt::AlignCenter);
    stuMode ->item(1,1)->setTextAlignment(Qt::AlignCenter);
    stuMode ->item(1,2)->setTextAlignment(Qt::AlignCenter);
    stuMode ->item(1,3)->setTextAlignment(Qt::AlignCenter);

    ui ->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);          //设置表格中显示的内容不可编辑
    stuMode->sort(3,Qt::DescendingOrder);                                        //设置表格数据根据分数排序
}

(4)结果演示 

  05 控件详解:Item Widgets(Qt项目部件)

List Widget清单控件
Tree Widget树形控件
Table Widget表控件

001 List Widget(清单控件)  

案例:

(1)创建Widget新项目(带UI文件)

直接在UI文件中修改窗口标题为"ListWidget(清单控件)",并在窗口中添加List Widget控件。

(2)修改"widget.cpp"文件

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

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

    QListWidgetItem *qitem = new QListWidgetItem("将进酒--作者:李白");    //设置ListWidget标题
    ui->listWidget->addItem(qitem);
    qitem -> setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);         //设置ListWidget标题居中对齐

    QStringList slist;
    slist<<"1:君不见,黄河之水天上来,奔流到海不复回。";
    slist<<"2:君不见,高堂明镜悲白发,朝如青丝暮成雪。";
    slist<<"3:人生得意须尽欢,莫使金樽空对月。";
    slist<<"4:天生我材必有用,千金散尽还复来。";
    slist<<"5:烹羊宰牛且为乐,会须一饮三百杯。";
    slist<<"6:岑夫子,丹丘生,将进酒,杯莫停。";
    slist<<"7:与君歌一曲,请君为我倾耳听。";
    slist<<"8:钟鼓馔玉不足贵,但愿长醉不愿醒。";
    slist<<"9:古来圣贤皆寂寞,惟有饮者留其名。";
    slist<<"10:陈王昔时宴平乐,斗酒十千恣欢谑。";
    slist<<"11:主人何为言少钱,径须沽取对君酌。";
    slist<<"12:五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。";



    ui  ->listWidget->addItems(slist);
}

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

(3)结果演示 

002 Tree Widget(树形控件)  

案例:

(1)创建Widget新项目(带UI文件)

直接在UI文件中修改窗口标题为"TreeWidget测试控件",并在窗口中添加Tree Widget控件。

(2)修改"widget.h"文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTreeWidget>


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

(3)修改"widget.cpp"文件

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

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

    //1.添加一级节点
    QTreeWidgetItem *topItem1 = new QTreeWidgetItem(ui->treeWidget);
    topItem1 -> setText(0,"清华大学");
    topItem1 -> setCheckState(0,Qt::Checked);              //显示一级节点前的复选框
    ui->treeWidget->addTopLevelItem(topItem1);

    //TreeWidget控件会默认由一个表头,执行以下操作隐藏表头
    ui->treeWidget->setHeaderHidden(true);
    //设置TreeWidget默认处于展开模式
    ui->treeWidget->expandAll();

    //2:将二级节点节点添加到一级节点的topItem1
    QTreeWidgetItem *topItem11 = new QTreeWidgetItem(topItem1);
    topItem11 -> setText(0,"建筑学院");
    topItem11 -> setCheckState(0,Qt::Checked);
    QTreeWidgetItem *topItem12 = new QTreeWidgetItem(topItem1);
    topItem12 -> setText(0,"土木学院");
    topItem12 -> setCheckState(0,Qt::Checked);
    QTreeWidgetItem *topItem13 = new QTreeWidgetItem(topItem1);
    topItem13 -> setText(0,"信息科学技术学院");
    topItem13 -> setCheckState(0,Qt::Checked);
    QTreeWidgetItem *topItem14 = new QTreeWidgetItem(topItem1);
    topItem14 -> setText(0,"马克思主义学院");
    topItem14 -> setCheckState(0,Qt::Checked);

    //3.添加一级节点
    QTreeWidgetItem *topItem2 = new QTreeWidgetItem(ui->treeWidget);
    topItem2 -> setText(0,"北京大学");
    topItem2 -> setCheckState(0,Qt::Checked);              //显示一级节点前的复选框
    ui->treeWidget->addTopLevelItem(topItem2);

    QTreeWidgetItem *topItem21 = new QTreeWidgetItem(topItem2);
    topItem21 -> setText(0,"数学科学学院");
    topItem21 -> setCheckState(0,Qt::Checked);
    QTreeWidgetItem *topItem22 = new QTreeWidgetItem(topItem2);
    topItem22 -> setText(0,"电子科学与技术学院");
    topItem22 -> setCheckState(0,Qt::Checked);
    QTreeWidgetItem *topItem23 = new QTreeWidgetItem(topItem2);
    topItem23 -> setText(0,"通信工程学院");
    topItem23 -> setCheckState(0,Qt::Checked);
    QTreeWidgetItem *topItem24 = new QTreeWidgetItem(topItem2);
    topItem24 -> setText(0,"马克思主义学院");
    topItem24 -> setCheckState(0,Qt::Checked);

}

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

(4)结果演示 

003 Table Widget(表控件)  

案例:

(1)创建Widget新项目(带UI文件)

直接在UI文件中修改窗口标题为"TableWidget测试控件",并在窗口中添加Table Widget。

(2)修改"widget.cpp"文件

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //设置表格行数和列数2行2列
    ui -> tableWidget ->setRowCount(3);
    ui -> tableWidget ->setColumnCount(2);

    //设置水平对齐
    QStringList slist;
    slist<<"学号"<<"分数";
    ui->tableWidget->setHorizontalHeaderLabels(slist);
    QList<QString>strno;
    strno<<"202201"<<"202202"<<"202203";
    QList<QString>strscore;
    strscore<<"708"<<"712"<<"690";

    //通过循环为表格赋值
    for(int i=0;i<3;i++)
    {
        int icol = 0;
        QTableWidgetItem *pitem = new QTableWidgetItem(strno.at(i));
        ui->tableWidget->setItem(i,icol++,pitem);
        ui->tableWidget->setItem(i,icol,new QTableWidgetItem(strscore.at(i)));
    }
}

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

  (3)结果演示 

06 控件详解:Input Widgets

Combo Box编辑组合框
Font Combo Box字体组合框
Line Edit行编辑框
Text Edit文本编辑框
Plain Text Edit多行文本编辑器
Spin Box整数旋转框
Double Spin Box小数旋转框
Time Edit时间编辑
Date Edit日期编辑
Date/Time Edit日期时间编辑
Dial表盘控件
Horizontal Scroll Bar水平滚动条
Vertical Scroll Bar垂直滚动条
Horizontal Slider水平滑动条
Vertical Slider垂直滑动条
Key Sequence Edit快捷键输入控件

001 Combobox Box(编辑组合框)

案例:

(1)创建mainwindow新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

//1:Combo Box控件
#include<QComboBox>


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;

    //1:声明一个QComboBox对象
    QComboBox *combobox;

private slots:
    void comboboxIndex(int);
};
#endif // MAINWINDOW_H

(3)修改"mainwindow.cpp"文件

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this -> setWindowTitle("Input所有控件测试");     //设置主窗口标题
    //设置主窗口的显示位置及大小
    this->setGeometry(300,200,1000,600);

    //1:
    combobox = new QComboBox(this);      //在主窗口中实例化编辑组合框
    combobox ->setGeometry(10,10,200,30);
    combobox->addItem("北京市");
    combobox->addItem("上海市");
    combobox->addItem("天津市");
    combobox->addItem("重庆市");
    combobox->addItem("湖南省");
    combobox->addItem("江西省");
    combobox->addItem("黑龙江省");
    combobox->addItem("浙江省");

    //信号槽函数连接实现
    connect(combobox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboboxIndex(int)));
}

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

 void MainWindow::comboboxIndex(int index)
 {
    qDebug()<<"你选择的区别是:"<<combobox->itemText(index)<<Qt::endl;
    QMessageBox mybox(QMessageBox::Question,"信息",combobox -> itemText(index),QMessageBox::Yes|QMessageBox::No);
    mybox.exec();
 }

(4)结果演示 

002 Font Combo Box(字体组合框)

案例:

(1)创建mainwindow新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

//1:Combo Box控件
#include<QComboBox>

//2:FontComboBox控件
#include <QFontComboBox>
#include <QLabel>


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;

//1:声明一个QComboBox对象
private:
    QComboBox *combobox;

private slots:
    void comboboxIndex(int);

//2:声明一个QFontComboBox对象
private:
    QFontComboBox *fontcombobox;
    QLabel *qlabels;
private slots:
    void fontcomboboxFunc(QFont);

};
#endif // MAINWINDOW_H

(3)修改"mainwindow.cpp"文件 

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this -> setWindowTitle("Input所有控件测试");     //设置主窗口标题
    //设置主窗口的显示位置及大小
    this->setGeometry(300,200,1000,600);

    //1:QComboBox
    combobox = new QComboBox(this);      //在主窗口中实例化编辑组合框
    combobox ->setGeometry(10,10,200,30);
    combobox->addItem("北京市");
    combobox->addItem("上海市");
    combobox->addItem("天津市");
    combobox->addItem("重庆市");
    combobox->addItem("湖南省");
    combobox->addItem("江西省");
    combobox->addItem("黑龙江省");
    combobox->addItem("浙江省");
    //信号槽函数连接实现
    connect(combobox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboboxIndex(int)));

    //2:QFontComboBox
    fontcombobox = new QFontComboBox(this);
    qlabels = new QLabel(this);
    fontcombobox->setGeometry(10,50,200,30);
    qlabels -> setGeometry(10,90,300,50);
    //信号与槽函数连接实现
    connect(fontcombobox,SIGNAL(currentFontChanged(QFont)),this,SLOT(fontcomboboxFunc(QFont)));
}

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

 void MainWindow::comboboxIndex(int index)
 {
    qDebug()<<"你选择的区别是:"<<combobox->itemText(index)<<Qt::endl;
    QMessageBox mybox(QMessageBox::Question,"信息",combobox -> itemText(index),QMessageBox::Yes|QMessageBox::No);
    mybox.exec();
 }


 void MainWindow::fontcomboboxFunc(QFont font)
 {  QString qStr = "Qt开发工程师";
    qlabels -> setText(qStr);
    qlabels ->setFont(font);               //将qlabel标签中的文本字体样式设置为fontcombobox选中的样式

 }

(4)结果演示 

003 Line Edit(行编辑框)

案例:

(1)创建mainwindow新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

//1:Combo Box控件
#include<QComboBox>

//2:FontComboBox控件
#include <QFontComboBox>
#include <QLabel>

//3:Line Edit控件
#include <QLineEdit>
#include <QPushButton>

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;

//1:声明一个QComboBox对象
private:
    QComboBox *combobox;

private slots:
    void comboboxIndex(int);

//2:声明一个QFontComboBox对象
private:
    QFontComboBox *fontcombobox;
    QLabel *qlabels;
private slots:
    void fontcomboboxFunc(QFont);

//3:声明一个QLineEdit/QPushButton/QLabel对象
private:
    QLineEdit *lineedit;
    QPushButton *pushbutton;
    QLabel *qlabely;
private slots:
    void pushbuttonclicked();


};
#endif // MAINWINDOW_H

(3)修改"mainwindow.cpp"文件 

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this -> setWindowTitle("Input所有控件测试");     //设置主窗口标题
    //设置主窗口的显示位置及大小
    this->setGeometry(300,200,1000,600);

    //1:QComboBox
    combobox = new QComboBox(this);      //在主窗口中实例化编辑组合框
    combobox ->setGeometry(10,10,200,30);
    combobox->addItem("北京市");
    combobox->addItem("上海市");
    combobox->addItem("天津市");
    combobox->addItem("重庆市");
    combobox->addItem("湖南省");
    combobox->addItem("江西省");
    combobox->addItem("黑龙江省");
    combobox->addItem("浙江省");
    //信号槽函数连接实现
    connect(combobox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboboxIndex(int)));

    //2:QFontComboBox
    fontcombobox = new QFontComboBox(this);
    qlabels = new QLabel(this);
    fontcombobox->setGeometry(10,50,200,30);
    qlabels -> setGeometry(10,90,300,50);
    //信号与槽函数连接实现
    connect(fontcombobox,SIGNAL(currentFontChanged(QFont)),this,SLOT(fontcomboboxFunc(QFont)));

    //3:Line Edit
    lineedit = new QLineEdit(this);
    lineedit -> setGeometry(10,150,200,30);
    pushbutton = new QPushButton(this);
    pushbutton ->setGeometry(220,150,100,30);
    pushbutton ->setText("点击我");
    qlabely = new QLabel(this);
    qlabely -> setGeometry(10,200,400,30);
    qlabely->setText("你输入的内容为:");
    //信号与槽函数连接
    connect(pushbutton,SIGNAL(clicked(bool)),this,SLOT(pushbuttonclicked()));

}

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

//1:
 void MainWindow::comboboxIndex(int index)
 {
    qDebug()<<"你选择的区别是:"<<combobox->itemText(index)<<Qt::endl;
    QMessageBox mybox(QMessageBox::Question,"信息",combobox -> itemText(index),QMessageBox::Yes|QMessageBox::No);
    mybox.exec();
 }

//2:
 void MainWindow::fontcomboboxFunc(QFont font)
 {  QString qStr = "Qt开发工程师";
    qlabels -> setText(qStr);
    qlabels ->setFont(font);               //将qlabel标签中的文本字体样式设置为fontcombobox选中的样式

 }

 //3:
 void MainWindow::pushbuttonclicked()
 {
    QString qstr;
    qstr = "你输入的内容为:";
    qstr = qstr + lineedit->text();
    qlabely->setText(qstr);
    lineedit ->clear();               //清除Line Edit里面的文本
}

(4)结果演示 

 004 Plain Text Edit(多行文本编辑器)

案例:

(1)创建mainwindow新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

//1:Combo Box控件
#include<QComboBox>

//2:FontComboBox控件
#include <QFontComboBox>
#include <QLabel>

//3:Line Edit控件
#include <QLineEdit>
#include <QPushButton>

//4:Plain Text Edit控件
#include <QPlainTextEdit>
#include <QRadioButton>

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;

//1:声明一个QComboBox对象
private:
    QComboBox *combobox;

private slots:
    void comboboxIndex(int);

//2:声明一个QFontComboBox对象
private:
    QFontComboBox *fontcombobox;
    QLabel *qlabels;
private slots:
    void fontcomboboxFunc(QFont);

//3:声明一个QLineEdit/QPushButton/QLabel对象
private:
    QLineEdit *lineedit;
    QPushButton *pushbutton;
    QLabel *qlabely;
private slots:
    void pushbuttonclicked();

 //4:声明QPlainTextEdit和QRadioButton对象
private:
    QPlainTextEdit *plaintedit;
    QRadioButton *radiobutton;
private slots:
    void radioButtonClicked();



};
#endif // MAINWINDOW_H

(3)修改"mainwindow.cpp"文件 

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

#include <QDir>
#include <QTextStream>
#include <QCoreApplication>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this -> setWindowTitle("Input所有控件测试");     //设置主窗口标题
    //设置主窗口的显示位置及大小
    this->setGeometry(300,200,1000,600);

    //1:QComboBox
    combobox = new QComboBox(this);      //在主窗口中实例化编辑组合框
    combobox ->setGeometry(10,10,200,30);
    combobox->addItem("北京市");
    combobox->addItem("上海市");
    combobox->addItem("天津市");
    combobox->addItem("重庆市");
    combobox->addItem("湖南省");
    combobox->addItem("江西省");
    combobox->addItem("黑龙江省");
    combobox->addItem("浙江省");
    //信号槽函数连接实现
    connect(combobox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboboxIndex(int)));

    //2:QFontComboBox
    fontcombobox = new QFontComboBox(this);
    qlabels = new QLabel(this);
    fontcombobox->setGeometry(10,50,200,30);
    qlabels -> setGeometry(10,90,300,50);
    //信号与槽函数连接实现
    connect(fontcombobox,SIGNAL(currentFontChanged(QFont)),this,SLOT(fontcomboboxFunc(QFont)));

    //3:Line Edit
    lineedit = new QLineEdit(this);
    lineedit -> setGeometry(10,150,200,30);
    pushbutton = new QPushButton(this);
    pushbutton ->setGeometry(220,150,100,30);
    pushbutton ->setText("点击我");
    qlabely = new QLabel(this);
    qlabely -> setGeometry(10,200,400,30);
    qlabely->setText("你输入的内容为:");
    //信号与槽函数连接
    connect(pushbutton,SIGNAL(clicked(bool)),this,SLOT(pushbuttonclicked()));

    //4:
    plaintedit = new QPlainTextEdit(this);
    plaintedit->setGeometry(10,240,400,200);
    radiobutton = new QRadioButton(this);
    radiobutton ->setGeometry(300,220,200,30);
    radiobutton ->setText("只读模式");
    //设置工作目录为可执行程序的工作目录
    QDir::setCurrent(QCoreApplication::applicationDirPath());
    QFile fe("moc_mainwindow.cpp");                 //如果这个文件不在这个目录下,返回上一级目录
    fe.open((QFile::ReadOnly|QFile::Text));
    //加载文件流
    QTextStream strin(&fe);
    plaintedit ->insertPlainText(strin.readAll());
    //信号与槽函数连接,将加载进来的文本内容在多行文本编辑框中设置为只读
    connect(radiobutton,SIGNAL(clicked(bool)),this,SLOT(radioButtonClicked()));

}

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

//1:
 void MainWindow::comboboxIndex(int index)
 {
    qDebug()<<"你选择的区别是:"<<combobox->itemText(index)<<Qt::endl;
    QMessageBox mybox(QMessageBox::Question,"信息",combobox -> itemText(index),QMessageBox::Yes|QMessageBox::No);
    mybox.exec();
 }

//2:
 void MainWindow::fontcomboboxFunc(QFont font)
 {  QString qStr = "Qt开发工程师";
    qlabels -> setText(qStr);
    qlabels ->setFont(font);               //将qlabel标签中的文本字体样式设置为fontcombobox选中的样式

 }

 //3:
 void MainWindow::pushbuttonclicked()
 {
    QString qstr;
    qstr = "你输入的内容为:";
    qstr = qstr + lineedit->text();
    qlabely->setText(qstr);
    lineedit ->clear();               //清除Line Edit里面的文本
}

 //4:
 void MainWindow::radioButtonClicked()
 {
    if(radiobutton->isChecked())
    {
        plaintedit->setReadOnly(true);   //如果单选框被选中,多行文本框plainedit设置为只读
    }
    else
        plaintedit->setReadOnly(false);
 }

(4)结果演示 

005 Spin Box(整数旋转框) 

案例:

(1)创建mainwindow新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

//1:Combo Box控件
#include<QComboBox>

//2:FontComboBox控件
#include <QFontComboBox>
#include <QLabel>

//3:Line Edit控件
#include <QLineEdit>
#include <QPushButton>

//4:Plain Text Edit控件
#include <QPlainTextEdit>
#include <QRadioButton>

//5:Spin Box控件
#include <QSpinBox>

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;

//1:声明一个QComboBox对象
private:
    QComboBox *combobox;

private slots:
    void comboboxIndex(int);

//2:声明一个QFontComboBox对象
private:
    QFontComboBox *fontcombobox;
    QLabel *qlabels;
private slots:
    void fontcomboboxFunc(QFont);

//3:声明一个QLineEdit/QPushButton/QLabel对象
private:
    QLineEdit *lineedit;
    QPushButton *pushbutton;
    QLabel *qlabely;
private slots:
    void pushbuttonclicked();

 //4:声明QPlainTextEdit和QRadioButton对象
private:
    QPlainTextEdit *plaintedit;
    QRadioButton *radiobutton;
private slots:
    void radioButtonClicked();
//5:声明QPlainTextEdit/QRadioButton对象
private:
    QSpinBox *spinbox;
private slots:
    void spinboxValueChanged(int x);
};
#endif // MAINWINDOW_H

(3)修改"mainwindow.cpp"文件 

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

#include <QDir>
#include <QTextStream>
#include <QCoreApplication>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this -> setWindowTitle("Input所有控件测试");     //设置主窗口标题
    //设置主窗口的显示位置及大小
    this->setGeometry(300,200,1000,600);

    //1:QComboBox
    combobox = new QComboBox(this);      //在主窗口中实例化编辑组合框
    combobox ->setGeometry(10,10,200,30);
    combobox->addItem("北京市");
    combobox->addItem("上海市");
    combobox->addItem("天津市");
    combobox->addItem("重庆市");
    combobox->addItem("湖南省");
    combobox->addItem("江西省");
    combobox->addItem("黑龙江省");
    combobox->addItem("浙江省");
    //信号槽函数连接实现
    connect(combobox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboboxIndex(int)));

    //2:QFontComboBox
    fontcombobox = new QFontComboBox(this);
    qlabels = new QLabel(this);
    fontcombobox->setGeometry(10,50,200,30);
    qlabels -> setGeometry(10,90,300,50);
    //信号与槽函数连接实现
    connect(fontcombobox,SIGNAL(currentFontChanged(QFont)),this,SLOT(fontcomboboxFunc(QFont)));

    //3:Line Edit
    lineedit = new QLineEdit(this);
    lineedit -> setGeometry(10,150,200,30);
    pushbutton = new QPushButton(this);
    pushbutton ->setGeometry(220,150,100,30);
    pushbutton ->setText("点击我");
    qlabely = new QLabel(this);
    qlabely -> setGeometry(10,200,400,30);
    qlabely->setText("你输入的内容为:");
    //信号与槽函数连接
    connect(pushbutton,SIGNAL(clicked(bool)),this,SLOT(pushbuttonclicked()));

    //4:
    plaintedit = new QPlainTextEdit(this);
    plaintedit->setGeometry(10,240,400,200);
    radiobutton = new QRadioButton(this);
    radiobutton ->setGeometry(300,220,200,30);
    radiobutton ->setText("只读模式");
    //设置工作目录为可执行程序的工作目录
    QDir::setCurrent(QCoreApplication::applicationDirPath());
    QFile fe("moc_mainwindow.cpp");                 //如果这个文件不在这个目录下,返回上一级目录
    fe.open((QFile::ReadOnly|QFile::Text));
    //加载文件流
    QTextStream strin(&fe);
    plaintedit ->insertPlainText(strin.readAll());
    //信号与槽函数连接,将加载进来的文本内容在多行文本编辑框中设置为只读
    connect(radiobutton,SIGNAL(clicked(bool)),this,SLOT(radioButtonClicked()));

    //5:改变窗口背景颜色
    this ->setStyleSheet("QMainWindow{background-color:""rgba(100,200,100,100%)}");
    spinbox=new QSpinBox(this);
    spinbox->setGeometry(440,250,150,30);
    spinbox->setRange(0,100);                               //设置整数旋转框的范围
    spinbox->setSingleStep(10);                             //设置步长
    spinbox->setValue(100);                                 //设置初始化值
    spinbox->setSuffix("%不透明度");                         //设置整数旋转框后缀
    //信号与槽函数连接
    connect(spinbox,SIGNAL(valueChanged(int)),this,SLOT(spinboxValueChanged(int)));
}

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

//1:
 void MainWindow::comboboxIndex(int index)
 {
    qDebug()<<"你选择的区别是:"<<combobox->itemText(index)<<Qt::endl;
    QMessageBox mybox(QMessageBox::Question,"信息",combobox -> itemText(index),QMessageBox::Yes|QMessageBox::No);
    mybox.exec();
 }

//2:
 void MainWindow::fontcomboboxFunc(QFont font)
 {  QString qStr = "Qt开发工程师";
    qlabels -> setText(qStr);
    qlabels ->setFont(font);               //将qlabel标签中的文本字体样式设置为fontcombobox选中的样式

 }

 //3:
 void MainWindow::pushbuttonclicked()
 {
    QString qstr;
    qstr = "你输入的内容为:";
    qstr = qstr + lineedit->text();
    qlabely->setText(qstr);
    lineedit ->clear();               //清除Line Edit里面的文本
}

 //4:
 void MainWindow::radioButtonClicked()
 {
    if(radiobutton->isChecked())
    {
        plaintedit->setReadOnly(true);   //如果单选框被选中,多行文本框plainedit设置为只读
    }
    else
        plaintedit->setReadOnly(false);
 }

 //5:
 void MainWindow::spinboxValueChanged(int x)
 {
    double dx = (double)x/100;
    this ->setWindowOpacity(dx);                  //设置主窗口的透明度
 }

(4)结果演示 

006 Time Edit、Date Edit、Date/Time Edit(时间控件)

案例:

(1)创建mainwindow新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
//6:时间控件
#include <QTimeEdit>
#include <QDateEdit>
#include <QDateTimeEdit>

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;

//6:声明QDateTimeEdit/QTimeEdit/QDateEdit对象
private:
    QDateTimeEdit *dte;
    QTimeEdit *te;
    QDateEdit *de;

};
#endif // MAINWINDOW_H

(3)修改"mainwindow.cpp"文件

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //6:QDateTimeEdit/QTimeEdit/QDateEdit
    dte = new QDateTimeEdit(QDateTime::currentDateTime(),this);
    dte->setGeometry(440,290,200,30);
    te = new QTimeEdit(QTime::currentTime(),this);
    te->setGeometry(440,330,200,30);
    de=new QDateEdit(QDate::currentDate(),this);
    de->setGeometry(440,370,200,30);
}


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

(4)结果演示 

007 QScrollBar(水平和垂直滚动控件)

案例:

(1)创建mainwindow新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
//6:时间控件
#include <QTimeEdit>
#include <QDateEdit>
#include <QDateTimeEdit>

//7:Scroll Bar控件
#include <QScrollBar>

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;

//6:声明QDateTimeEdit/QTimeEdit/QDateEdit对象
private:
    QDateTimeEdit *dte;
    QTimeEdit *te;
    QDateEdit *de;

//7:声明QScrollBar对象
    QScrollBar *hscrollbar,*vscrollbar;

};
#endif // MAINWINDOW_H

(3)修改"mainwindow.cpp"文件

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //6:QDateTimeEdit/QTimeEdit/QDateEdit
    dte = new QDateTimeEdit(QDateTime::currentDateTime(),this);
    dte->setGeometry(440,290,200,30);
    te = new QTimeEdit(QTime::currentTime(),this);
    te->setGeometry(440,330,200,30);
    de=new QDateEdit(QDate::currentDate(),this);
    de->setGeometry(440,370,200,30);

    //7:QScrollBar滚动条
    hscrollbar = new QScrollBar(Qt::Horizontal,this);
    hscrollbar->setGeometry(0,500,750,30);
    vscrollbar=new QScrollBar(Qt::Vertical,this);
    vscrollbar->setGeometry(750,0,30,500);
}


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

(4)结果演示 

 008 Key Sequence Edit(快捷键控件)

案例:

(1)创建mainwindow新项目

(2)修改"mainwindow.h"文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
//6:时间控件
#include <QTimeEdit>
#include <QDateEdit>
#include <QDateTimeEdit>

//7:Scroll Bar控件
#include <QScrollBar>

//8:Key Sequnence Edit控件
#include <QKeySequenceEdit>

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;

//6:声明QDateTimeEdit/QTimeEdit/QDateEdit对象
private:
    QDateTimeEdit *dte;
    QTimeEdit *te;
    QDateEdit *de;

//7:声明QScrollBar对象
    QScrollBar *hscrollbar,*vscrollbar;

//8:声明QKeySequenceEdit对象
private:
    QKeySequenceEdit *kse;
private slots:
    void keyseqeditChanged(const QKeySequence &key);
};
#endif // MAINWINDOW_H

(3)修改"mainwindow.cpp"文件

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //6:QDateTimeEdit/QTimeEdit/QDateEdit
    dte = new QDateTimeEdit(QDateTime::currentDateTime(),this);
    dte->setGeometry(440,290,200,30);
    te = new QTimeEdit(QTime::currentTime(),this);
    te->setGeometry(440,330,200,30);
    de=new QDateEdit(QDate::currentDate(),this);
    de->setGeometry(440,370,200,30);

    //7:QScrollBar滚动条
    hscrollbar = new QScrollBar(Qt::Horizontal,this);
    hscrollbar->setGeometry(0,500,750,30);
    vscrollbar=new QScrollBar(Qt::Vertical,this);
    vscrollbar->setGeometry(750,0,30,500);

    //8:快捷键实现
    kse= new QKeySequenceEdit(this);
    kse ->setGeometry(400,530,200,30);
    //信号与槽函数连接
    connect(kse,SIGNAL(keySequenceChanged(const QKeySequence &)),this,SLOT(keyseqeditChanged(const QKeySequence &)));
}



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

void MainWindow::keyseqeditChanged(const QKeySequence &key)
{
    if(key==QKeySequence(tr("Ctrl+Q")))
    {
        this->close();
    }
    else
    {
        qDebug()<<key.toString()<<Qt::endl;
    }
}

(4)结果演示 

07 控件详解:Distplay Widgets 

Label标签*
Text Browser文本浏览器*
Graphics View图形视图框架
Calender Widget日历控件
LCD Number液晶字体数字控件*
Progress Bar进度条*
Horizontal Line水平线
Vertical Line垂直线
OpenGL Widget图形渲染控件
QQuickWidgetQML嵌入控件

001 Label(标签)

(1)创建widget项目(带ui文件)

在ui文件中添加如下内容,用来显示图片。

 (2)修改"widget.h"文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

//1:
#include <QMessageBox>

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;

//1
private:
    void textlabelFunc();
};
#endif // WIDGET_H

  (3)修改"widget.cpp"文件

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //1.调用函数
    textlabelFunc();
}

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

void Widget::textlabelFunc()
{
    //读取图片路径
    QString fName("E:\\File\\Code_Program\\C_C++\\Qt\\Learn\\LingShengQt\\04\\07DIsplayWdiget\\QtDIsplayWdigetProssss\\666.jpg");
    QImage *qimg=new QImage;
    if(!(qimg->load(fName)))    //判断加载图片是否成功
    {
        QMessageBox::information(this,"失败","加载jpg图片失败,请重新检查路径");
        delete qimg;
        return;
    }
    ui->labeljpg->setPixmap(QPixmap::fromImage(*qimg));     //将图片加载进标签里
};

(4)结果演示 

002 Text Browser(文本浏览器)

(1)创建widget项目(带ui文件)

在ui文件中添加添加Text Browser控件。

  (2)修改"widget.h"文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

//1:
#include <QMessageBox>

//2:
#include <QFile>

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;

//1
private:
    void textlabelFunc();

//2
private:
    void textbrowserFuncReadTxt();
};
#endif // WIDGET_H

  (3)修改"widget.cpp"文件

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //1.调用函数
    textlabelFunc();
    //2.调用函数
    textbrowserFuncReadTxt();
}

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

void Widget::textlabelFunc()
{
    //读取图片路径
    QString fName("E:\\File\\Code_Program\\C_C++\\Qt\\Learn\\LingShengQt\\04\\07DIsplayWdiget\\QtDIsplayWdigetProssss\\666.jpg");
    QImage *qimg=new QImage;
    if(!(qimg->load(fName)))    //判断加载图片是否成功
    {
        QMessageBox::information(this,"失败","加载jpg图片失败,请重新检查路径");
        delete qimg;
        return;
    }
    ui->labeljpg->setPixmap(QPixmap::fromImage(*qimg));     //将图片加载进标签里
}


void Widget::textbrowserFuncReadTxt()
{
    QString qStrdData;
    QFile qfile("E:\\File\\Code_Program\\C_C++\\Qt\\Learn\\LingShengQt\\04\\07DIsplayWdiget\\QtDIsplayWdigetProssss\\testfile.txt");   //读取文本文件
    if(!qfile.open(QIODevice::ReadOnly|QIODevice::Text))      //如果文件读取不成功
    {
        QMessageBox::warning(this,"失败","打开文件失败,请重新检查");
    }
    while(!qfile.atEnd())             //当读取的内容不到最后一行时
    {
        QByteArray ay = qfile.readLine();                //一行一行读取文本内容
        QString strs(ay);             //将读取到的内容转换为字符串
        qStrdData.append(strs);       //将每一行字符串添加到新字符串里
    }
    ui->textBrowser->setText(qStrdData);     //将读取的文本显示到textBrowser中
}

(4)结果演示 

003 Progress Bar(进度条)

(1)创建widget项目(带ui文件)

在ui文件中添加添加Progress Bar控件,并给按钮添加clicked槽函数。

(2)修改"widget.cpp"文件

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

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

    //3.初始化进度条
    ui->progressBar->setRange(0,1000000);        //设置进度条范围
    ui->progressBar->setValue(0);                //设置进度条初始状态

}

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

void Widget::on_pushButton_clicked()
{
    for(int i=0;i<1000000;i++)
    {
        for(int j=0;j<1;j++)
        {
            ui->progressBar->setValue(i);
        }
    }
}

 (3)结果演示

 004 LCD Number(LCD数字控件)

(1)创建widget项目(带ui文件)

在ui文件中添加添加LCD BNumberr控件,并给三个按钮依次添加clicked槽函数。

(2)修改"widget.h"文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    //自定义函数:定时器
    void on_timerout();
private:
    int iValues = 0;
    QTimer *timers;        //定时器
    void InitFunc();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

(3)修改"widget.cpp"文件 

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

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

    //初始化
    InitFunc();
    //信号与槽函数连接
    connect(timers,&QTimer::timeout,this,&Widget::on_timerout);
}

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


void Widget::on_pushButton_clicked()
{
    timers->start();            //1s触发一次操作
    ui->pushButton->setEnabled(false);
    ui->pushButton_2->setEnabled(true);
    ui->pushButton_3->setEnabled(true);
}


void Widget::on_pushButton_2_clicked()
{
    timers->stop();            //1s触发一次操作
    ui->pushButton->setEnabled(true);
    ui->pushButton_2->setEnabled(false);
    ui->pushButton_3->setEnabled(true);

}


void Widget::on_pushButton_3_clicked()
{
    timers->stop();            //1s触发一次操作
    iValues =0;
    ui->lcdNumber->display(iValues);
    ui->pushButton->setEnabled(true);
    ui->pushButton_2->setEnabled(true);
    ui->pushButton_3->setEnabled(false);
}

void Widget::on_timerout()
{
    iValues++;
    ui->lcdNumber->display(iValues);
}

void Widget::InitFunc()
{
    timers = new QTimer(this);
    timers -> setInterval(1000);     //定时周期为1s
    timers ->stop();
}

  (4)结果演示

推荐课程:

https://xxetb.xetslk.com/s/vgpHh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值