QT 控件使用案例

常用控件

在这里插入图片描述

Vertical Layout:垂直布局。

Horizontal Layout:横向(水平)布局。

Grid Layout:网格(栅格)布局。

Form Layout:表单布局。

Horizontal Spacer:水平间隔。

Vertical Spacer:垂直间隔。

表单

头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QPushButton> //命令按钮控制头文件
#include <QLabel> //显示标签头文件
#include <QGridLayout> //网格布局头文件
#include <QFormLayout>
#include <QLineEdit>
class MainWindow : public QMainWindow
{
    Q_OBJECT  使用 Q_OBJECT 宏声明这是一个 QObject 派生类,启用 Qt 的元对象系统

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

    QGridLayout *gridLayout; //网格布局对象

    QPushButton *button1;
    QPushButton *button2;
    QPushButton *button3;
    QPushButton *button4;

};
#endif // MAINWINDOW_H

源文件:

#include "mainwindow.h"
# if 0
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // 创建一个中心窗口部件
    QWidget *centralWidget = new QWidget(this);
    setCentralWidget(centralWidget);
    // 创建一个栅格布局
    QGridLayout *gridLayout = new QGridLayout(centralWidget);
    gridLayout->setContentsMargins(10,10,10,10);//设置边距
    gridLayout->setSpacing(10);//设置间距


    //设置按钮
    button1= new QPushButton("按钮1", this);
    button1->setFixedHeight(50);//设置按钮高度
    button1->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);//设置按钮大小策略


    button2= new QPushButton("按钮2", this);
    button2->setFixedWidth(50);//设置按钮宽度
    button2->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);//设置按钮大小策略


    button3= new QPushButton("按钮3", this);
    button3->setFixedHeight(50);//设置按钮高度
    button3->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);//设置按钮大小策略

    button4= new QPushButton("按钮4", this);
    button4->setFixedWidth(50);//设置按钮宽度
    button4->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);//设置按钮大小策略


    //@param parent 对象
    //@param row 行号
    //@param column 列号
    //@param rowSpan 跨行数
    //@param columnSpan 跨列数
    //@param alignment 对齐方式
    gridLayout->addWidget(button1,0,1,1,1);//设置按钮在网格布局的位置
    gridLayout->addWidget(button2,0,0,3,1);//设置按钮在网格布局的位置
    gridLayout->addWidget(button3,2,1,1,2);//设置按钮在网格布局的位置
    gridLayout->addWidget(button4,1,1,1,1);//设置按钮在网格布局的位置
    setLayout(gridLayout);
}

MainWindow::~MainWindow() {}

#endif



MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
{
    // 创建一个中心窗口部件
    QWidget *centralWidget = new QWidget(this);
    setCentralWidget(centralWidget);

    //创建一个表单布局
    QFormLayout *formLayout = new QFormLayout(centralWidget);
    QLineEdit *line1 = new QLineEdit(this);//创建输入框
    QLineEdit *line2 = new QLineEdit(this);
    QLineEdit *line3 = new QLineEdit(this);

    formLayout->addRow("姓名:", line1);//添加行
    formLayout->addRow("年龄:", line2);
    formLayout->addRow("性别:", line3);
    formLayout->setContentsMargins(10,10,10,10);//设置边距
    formLayout->setSpacing(10);//设置间距

    //formLayout->setRowWrapPolicy(QFormLayout::DontWrapRows);//设置不换行
    formLayout->setRowWrapPolicy(QFormLayout::WrapLongRows);//设置包装长行
    formLayout->setLabelAlignment(Qt::AlignLeft);//设置标签对齐方式为左对齐

    setLayout(formLayout);

}

MainWindow::~MainWindow() {}

按钮

在这里插入图片描述

Push Button:命令按钮。

Tool Button:工具按钮。

Radio Button:单选按钮。

Check Box:复选框按钮。

Command Link Button:命令链接按钮。

Dialog Button Box:按钮盒。

Push Button 命令按钮。

头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
# include <QPushButton>
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private :
    QPushButton *button1;//按键1
    QPushButton *button2;
private slots:
    //声明按钮对应的槽函数
    void button1_clicked();
    void button2_clicked();

};
#endif // MAINWINDOW_H

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setWindowTitle("My App");
    //设置窗口大小
    //@Param1: 左上角x坐标
    //@Param2: 左上角y坐标
    //@Param3: 宽度
    //@Param4: 高度
    this->setGeometry(0, 0, 400, 200);

    //创建按钮
    button1 = new QPushButton("Button 1", this);
    button2 = new QPushButton("Button 2", this);

    //设置按钮位置
    //button1->move(100, 100);
    button1->setGeometry(20, 20, 100, 50);
    button2->setGeometry(20, 70, 100, 50);

    //链接信号槽
    connect(button1, SIGNAL(clicked()), this, SLOT(button1_clicked()));
    connect(button2, SIGNAL(clicked()), this, SLOT(button2_clicked()));




}

MainWindow::~MainWindow() {}


void MainWindow::button1_clicked(){
    //设置QMainWindow背景颜色
    this->setStyleSheet("QMainWindow{background-color:rgba(255,0,0,100);}");
}

void MainWindow::button2_clicked(){
    //设置QMainWindow背景颜色
    this->setStyleSheet("QMainWindow{background-color:rgba(0,0,0,0.5);}");
}

Tool Button:工具按钮。

头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QApplication>
#include <QStyle> //引入QStyle类 ,样式
#include <QToolBar> //引入QToolBar类 ,工具条
#include <QToolButton> //引入QToolButton类 ,工具按钮
class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    QToolBar *toolBar; //工具条
    QToolButton *toolButton; //工具按钮
private slots:
};
#endif // MAINWINDOW_H

#include "mainwindow.h"

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

    //实例化工具栏
    toolBar = new QToolBar(this);
    //设置工具栏位置
    toolBar->setGeometry(20, 20, 100, 100);

    //实例化QStyle对象
    QStyle *style = QApplication::style();

    QIcon icon = style->standardIcon(QStyle::SP_TitleBarContextHelpButton);

    //实例化ToolButton对象
    toolButton =new QToolButton();
    toolButton->setIcon(icon);//设置按钮图标
    toolButton->setText("Help");//设置按钮提示信息
    toolButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//设置按钮样式

    //添加按钮到工具栏
    toolBar->addWidget(toolButton);
    
}

MainWindow::~MainWindow() {}

Radio Button:单选按钮。

头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QRadioButton>

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    //声明Radio Button
    QRadioButton *radioButton1, *radioButton2;
};
#endif // MAINWINDOW_H

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setGeometry(0, 0, 400, 300);
    this->setStyleSheet("QMainWindow{background-color:rgba(20,50,40,20%);}");
    //实例化Radio Button
    radioButton1= new QRadioButton("radioButton1",this);
    radioButton2= new QRadioButton("radioButton2",this);
    //设置Radio Button的位置
    radioButton1->setGeometry(10, 10, 100, 30);
    radioButton2->setGeometry(120, 10, 100, 30);
    //设置默认选中radioButton1
    radioButton1->setChecked(true);
}

MainWindow::~MainWindow() {}

Check Box:复选框按钮。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QCheckBox>
class MainWindow : public QMainWindow
{
    Q_OBJECT

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


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

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setGeometry(0, 0, 400, 300);
    this->setStyleSheet("QMainWindow {background-color: rgba(43, 76, 0, 40%);}");

    //实例化QCheckBox对象
    checkBox = new QCheckBox(this);
    //设置QCheckBox的位置和大小
    //@Param1: 左上角x坐标
    //@Param2: 左上角y坐标
    //@Param3: 宽度
    //@Param4: 高度
    checkBox->setGeometry(100, 100, 200, 20);

    checkBox->setCheckState(Qt::Checked);//设置初始状态为选中
    //设置显示文本
    checkBox->setText("复选");
    //设置字体颜色
    checkBox->setStyleSheet("color: white;");
    checkBox->setTristate();//开启三态

    connect(checkBox, SIGNAL(stateChanged(int)), this, SLOT(checkBoxClicked(int)));

}

MainWindow::~MainWindow() {}


void MainWindow::checkBoxClicked(int state){
    //判断checkBox的状态
    switch (state) {
    case Qt::Checked:
        qDebug() << "复选框被选中";
        checkBox->setText("复选框被选中");
        break;

    case Qt::PartiallyChecked:
        qDebug() << "复选框部分选中";
        checkBox->setText("复选框部分选中");
        break;

    case Qt::Unchecked:
        qDebug() << "复选框未选中";
        checkBox->setText("复选框未选中");
        break;
    }
}

Command Link Button:命令链接按钮。

头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QCommandLinkButton> //引入Command Link Button控件
#include <QDesktopServices>//引入桌面服务
#include <QUrl>//引入URL
class MainWindow : public QMainWindow
{
    Q_OBJECT

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

public:
    //声明Command Link Button
    QCommandLinkButton *cmdLinkButton;
public slots:
    void on_cmdLinkButton_clicked();
};
#endif // MAINWINDOW_H

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setGeometry(0,0,400,300);
    this->setStyleSheet("QMainWindow {background-color: rgba(43, 76, 0, 40%);}");
    //设置标题
    cmdLinkButton = new QCommandLinkButton("标题","内容",this);
    cmdLinkButton->setGeometry(100,100,200,80);

    connect(cmdLinkButton,SIGNAL(clicked()),this,SLOT(on_cmdLinkButton_clicked()));

}

MainWindow::~MainWindow() {}


void MainWindow::on_cmdLinkButton_clicked(){

    //调用操作系统打开浏览器
    QDesktopServices:: openUrl(QUrl("https://www.baidu.com"));
}

Dialog Button Box:按钮盒。

头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDialogButtonBox> //引入按钮盒
#include <QPushButton> //引入按钮
class MainWindow : public QMainWindow
{
    Q_OBJECT

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

public:
    QDialogButtonBox *buttonBox;//按钮盒
    QPushButton *pushButton1;//按钮
    QPushButton *pushButton2;//按钮

public slots:

void on_pushButton_clicked(QAbstractButton *button);

};
#endif // MAINWINDOW_H

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setGeometry(0, 0, 400, 300);
    buttonBox= new QDialogButtonBox(this);
    pushButton1= new QPushButton("自定义Button 1", this);
    //pushButton2= new QPushButton("Button 2", this);

    buttonBox->setGeometry(30,30,200,80);

    buttonBox->addButton(QDialogButtonBox::Cancel)->setText("取消");//添加取消按钮

    buttonBox->addButton(pushButton1,QDialogButtonBox::AcceptRole);//添加自定义按钮

    //讲信号与槽连接起来
    connect(buttonBox, SIGNAL(clicked(QAbstractButton *)),
            this, SLOT(on_pushButton_clicked(QAbstractButton *)));

}

MainWindow::~MainWindow() {}

void MainWindow::on_pushButton_clicked(QAbstractButton *button){
    if(button==buttonBox->button(QDialogButtonBox::Cancel)){
        qDebug("取消按钮被点击了");
    } else if (button==pushButton1){
        qDebug("自定义按钮1被点击了");
    }
}

容器组控件(Containers)

在这里插入图片描述

Group Box:组合框:提供带有标题的组合框框架。

Scroll Area:滚动区域。

Tool Box:工具箱。

Tab Widget:标签小部件。

Stacked Widget:堆叠部件。

Frame:框架。

Widget:小部件。

Mdi Area:MDI 区域。

Dock Widget:停靠窗体部件。

QAxWidget:封装 Flash 的 ActiveX 控件。

Group Box:组合框。

头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QGroupBox>
#include <QGridLayout>
#include <QRadioButton>
#include <QPushButton>
#include <QCheckBox>
#include <QMenu>
#include <QVBoxLayout> //可以在水平方向和垂直方向进行排列的控件 QHboxLayout/QVBoxLayout 所继承
class MainWindow : public QWidget
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
};
#endif // MAINWINDOW_H

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QWidget(parent)
{
    //组合框 1:
    QGroupBox *group1 = new QGroupBox("Group1");//创建groupBox
    QRadioButton *button1 = new QRadioButton("Button1");//创建按钮
    QRadioButton *button2 = new QRadioButton("Button2");//创建按钮
    QRadioButton *button3 = new QRadioButton("Button3");//创建按钮


    QVBoxLayout *layout = new QVBoxLayout();//创建垂直布局
    layout->addWidget(button1);//添加按钮到布局
    layout->addWidget(button2);
    layout->addWidget(button3);
    group1->setLayout(layout);//设置groupBox的布局

    //组合框 2:
    QGroupBox *group2 = new QGroupBox("Group2");//创建groupBox
    QCheckBox *button4 = new QCheckBox("Button4");//创建按钮
    QCheckBox *button5 = new QCheckBox("Button5");//创建按钮
    QCheckBox *button6 = new QCheckBox("Button6");//创建按钮
    button4->setTristate(true);//设置复选框为三状态

    button5->setChecked(true);//设置复选框为选中状态

    QVBoxLayout *layout2 = new QVBoxLayout();//创建垂直布局
    layout2->addWidget(button4);//添加按钮到布局
    layout2->addWidget(button5);
    layout2->addWidget(button6);
    group2->setLayout(layout2);//设置groupBox的布局


    //组合框 3:
    QGroupBox *group3 =new QGroupBox("Group3");//创建groupBox
    group3->setCheckable(true);//设置groupBox为可选中

    QRadioButton *button7 = new QRadioButton("Button1");
    QRadioButton *button8 = new QRadioButton("Button2");
    QCheckBox *button9 = new QCheckBox("Button3");

    QHBoxLayout *layout3 = new QHBoxLayout();//创建水平布局
    layout3->addWidget(button7);//添加按钮到布局
    layout3->addWidget(button8);
    layout3->addWidget(button9);
    group3->setLayout(layout3);//设置groupBox的布局


    //组合框 4:
    QGroupBox *group4 =new QGroupBox("Group4");//创建groupBox
    group4->setCheckable(true);//设置groupBox为可选中
    group4->setChecked(true);//设置groupBox为选中状态

    QPushButton *button10 = new QPushButton("Button1");

    //创建子菜单
    QMenu *menu = new QMenu(this);//创建菜单
    menu->addAction("Action1");//添加菜单项
    menu->addAction("Action2");
    menu->addAction("Action3");
    button10->setMenu(menu);//设置按钮的菜单


    QHBoxLayout *layout4 = new QHBoxLayout();//创建水平布局
    layout4->addWidget(button10);//添加按钮到布局
    group4->setLayout(layout4);//设置groupBox的布局





    QGridLayout* mainLayout = new QGridLayout(this);//创建主布局
    mainLayout->addWidget(group1, 0, 0, 1, 2);//添加groupBox到主布局的第一行第一列,占1行两列
    mainLayout->addWidget(group2, 0, 2, 1, 2);//添加groupBox到主布局的第一行第一列,占1行两列
    mainLayout->addWidget(group3, 0, 4, 1, 2);//添加groupBox到主布局的第一行第一列,占1行两列
    mainLayout->addWidget(group4, 4, 0, 1, 2);//添加groupBox到主布局的第一行第一列,占1行两列

    this->setLayout(mainLayout);//设置主布局
}

MainWindow::~MainWindow() {}

Scroll Area:滚动区域。

头文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QVBoxLayout>
#include <QScrollArea>
#include <QLabel>

class Widget : public QWidget
{
    Q_OBJECT

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

private:
    QVBoxLayout *mainLayout; //声明一个垂直布局
    QScrollArea *scrollArea; //声明一个滚动区域
    QWidget *contentWidget; //声明一个内容部件
    QVBoxLayout *contentLayout; //声明一个内容布局
};
#endif // WIDGET_H

#include "widget.h"

Widget::Widget(QWidget *parent)
        : QWidget(parent) {
    // 创建主布局
    mainLayout = new QVBoxLayout(this);// 创建垂直布局

    // 创建滚动区域
    scrollArea = new QScrollArea(this);
    scrollArea->setWidgetResizable(true);// 设置滚动区域可伸缩

    // 创建内容小部件
    contentWidget = new QWidget();
    scrollArea->setWidget(contentWidget);

    // 为内容小部件创建布局
    contentLayout = new QVBoxLayout(contentWidget);// 创建垂直布局

    // 添加一些标签到内容布局中
    for (int i = 0; i < 50; ++i) {
        // 创建标签
        //@param text 标签文本
        //@param parent 父对象
        QLabel *label = new QLabel(QString("Label %1").arg(i), contentWidget);
        contentLayout->addWidget(label);//添加到布局中
    }

    // 将滚动区域添加到主布局中
    mainLayout->addWidget(scrollArea);

    // 设置窗口属性
    this-> setLayout(mainLayout);
    this->setWindowTitle("QScrollArea 示例");
    this->resize(300, 200);


}

Widget::~Widget() {
    // 清理资源
}

Tool Box:工具箱。

#include <QApplication>
#include <QToolBox>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QVBoxLayout>
#include <QWidget>

int main(int argc, char *argv[]) {
    // 创建QApplication实例,这是Qt应用程序的入口点
    QApplication app(argc, argv);

    // 创建一个QToolBox实例,用于管理多个工具选项卡
    QToolBox toolBox;

    // 创建第一个选项卡的内容
    QWidget *page1 = new QWidget();  // 创建一个QWidget实例,作为第一个选项卡的内容容器
    QVBoxLayout *layout1 = new QVBoxLayout(page1);  // 创建一个垂直布局管理器,并将其设置为page1的布局
    QPushButton *button1 = new QPushButton("Button 1");  // 创建一个按钮,显示文本为"Button 1"
    QLabel *label1 = new QLabel("Label 1");  // 创建一个标签,显示文本为"Label 1"
    layout1->addWidget(button1);  // 将按钮添加到布局中
    layout1->addWidget(label1);  // 将标签添加到布局中
    toolBox.addItem(page1, "Tab 1");  // 将page1添加到ToolBox中,选项卡标题为"Tab 1"

    // 创建第二个选项卡的内容
    QWidget *page2 = new QWidget();  // 创建一个QWidget实例,作为第二个选项卡的内容容器
    QVBoxLayout *layout2 = new QVBoxLayout(page2);  // 创建一个垂直布局管理器,并将其设置为page2的布局
    QLineEdit *lineEdit2 = new QLineEdit();  // 创建一个单行输入框
    QLabel *label2 = new QLabel("Label 2");  // 创建一个标签,显示文本为"Label 2"
    layout2->addWidget(lineEdit2);  // 将输入框添加到布局中
    layout2->addWidget(label2);  // 将标签添加到布局中
    toolBox.addItem(page2, "Tab 2");  // 将page2添加到ToolBox中,选项卡标题为"Tab 2"

    // 创建第三个选项卡的内容
    QWidget *page3 = new QWidget();  // 创建一个QWidget实例,作为第三个选项卡的内容容器
    QVBoxLayout *layout3 = new QVBoxLayout(page3);  // 创建一个垂直布局管理器,并将其设置为page3的布局
    QPushButton *button3 = new QPushButton("Button 3");  // 创建一个按钮,显示文本为"Button 3"
    QLineEdit *lineEdit3 = new QLineEdit();  // 创建一个单行输入框
    layout3->addWidget(button3);  // 将按钮添加到布局中
    layout3->addWidget(lineEdit3);  // 将输入框添加到布局中
    toolBox.addItem(page3, "Tab 3");  // 将page3添加到ToolBox中,选项卡标题为"Tab 3"

    // 显示ToolBox
    toolBox.show();

    // 进入Qt应用程序的主事件循环,等待用户交互
    return app.exec();
}

Tab Widget:标签小部件。

头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTabWidget>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    QTabWidget *tabWidgetUI;
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

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

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

    this->setWindowTitle("选项卡小部件");
    this->setGeometry(0, 0, 800, 600);

    tabWidgetUI  = new QTabWidget(this);//创建选项卡小部件
    tabWidgetUI->setGeometry(10, 10, 400, 300);//设置选项卡小部件的位置和大小
    tabWidgetUI->show();//显示选项卡小部件

    // 创建第一个选项卡
    QWidget *page1 = new QWidget();
    QVBoxLayout *layout1 = new QVBoxLayout(page1);
    QPushButton *button1 = new QPushButton("Button 1");
    QLabel *label1 = new QLabel("Label 1");
    layout1->addWidget(button1);
    layout1->addWidget(label1);
    tabWidgetUI->addTab(page1, "Tab 1");
    // 创建第二个选项卡
    QWidget *page2 = new QWidget();
    QVBoxLayout *layout2 = new QVBoxLayout(page2);
    QLabel *label2 = new QLabel("Label 2");
    layout2->addWidget(label2);
    tabWidgetUI->addTab(page2, "Tab 2");

    // 创建第三个选项卡
    QWidget *page3 = new QWidget();
    QVBoxLayout *layout3 = new QVBoxLayout(page3);
    QPushButton *button3 = new QPushButton("Button 3");
    layout3->addWidget(button3);
    tabWidgetUI->addTab(page3, "Tab 3");

}

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

Stacked Widget:堆叠部件。

Frame:框架。

头文件:

#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
#include "widget.h"
#include "./ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setStyleSheet("background-color: white; ");
    this->setWindowTitle("My Widget");
    //设置背景颜色
    ui->frame_1->setStyleSheet("background-color: yellow;");
    ui->frame_2->setStyleSheet("background-color: green;");
    ui->frame_1->setLineWidth(3);//设置边框宽度
    ui->frame_1->setFrameShape(QFrame::Box);//设置边框样式
    ui->frame_2->setFrameShape(QFrame::Panel);//设置边框样式
}

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

Dock Widget:停靠窗体部件。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDockWidget>
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

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

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

    QDockWidget *dockWidget = new QDockWidget("Dock Widget", this);//创建Dock Widget
    dockWidget->setMaximumSize(300, 200);//设置最大尺寸
    dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置允许停靠的区域

}

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

Item View控件(Item Views)

在这里插入图片描述

List View:清单视图。

Tree View:树视图。

Table View:表视图。

Column View:列视图。

Undo View:撤销视图。

List View:清单视图。

头文件:

#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;
     QListView *listView1;
private slots:
    void onclicked(const QModelIndex &index);
};
#endif // WIDGET_H
#include "widget.h"
#include "./ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->resize(400, 300);
    //创建listview
    listView1=new QListView(this);
    listView1->setGeometry(0,0,200,200);

    //创建字符串列表
    QStringList qlist;
    qlist.append("item1");
    qlist.append("item2");
    qlist.append("item3");

    //创建清单模型
    QStringListModel *model=new QStringListModel(qlist);
    ///将模型添加到listview中
    listView1->setModel(model);
    //设置点击事件
    connect(listView1,SIGNAL(clicked(QModelIndex)),this,SLOT(onclicked(QModelIndex)));
}

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

void Widget::onclicked(const QModelIndex &index){
    QMessageBox::information(this,"提示","你点击了"+index.data().toString());
}

Tree View:树视图。

头文件:

#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;

    //初始化树控件视图
    void initTreeView();
    QStandardItemModel *model;



};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"

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

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

//初始化树形控件
void MainWindow::initTreeView(){
    //构造模型
    model=new QStandardItemModel(ui->treeView);
    model->setHorizontalHeaderLabels(QStringList()<<"名称"<<"大小"<<"类型");

    //添加节点
    QList<QStandardItem*> root;

    QStandardItem *item1=new QStandardItem("节点");
    QStandardItem *item2= new QStandardItem("100M");


    root.append(item1);
    root.append(item2);


    model->appendRow(root);
    //设置节点的子节点
    QList<QStandardItem*> root1;

    QStandardItem *item3=new QStandardItem("子节点");
    //QStandardItem *item4= new QStandardItem("50M");

    root1.append(item3);
    //root1.append(item4);

    item1->appendRow(root1);
    //设置节点的子节点的z子节点
    QList<QStandardItem*> root2;
    QStandardItem *item5=new QStandardItem("子子节点");
    //QStandardItem *item6= new QStandardItem("50M");
    root2.append(item5);
   // root2.append(item6);

    item3->appendRow(root2);



    ui->treeView->setModel(model);
}

Table View:表视图。

头文件:


#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;
    void InitTableViews();
};
#endif // MAINWINDOW_H
#include <QStandardItemModel>
#include "mainwindow.h"
#include "./ui_mainwindow.h"

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

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::InitTableViews(){
    //添加表头,准备数据模型
    //创建一个数据模型,设置行数和列数
    QStandardItemModel *model = new QStandardItemModel();
    model->setHorizontalHeaderItem(0, new QStandardItem("姓名"));
    model->setHorizontalHeaderItem(1, new QStandardItem("年龄"));
    model->setHorizontalHeaderItem(2, new QStandardItem("性别"));
    model->setHorizontalHeaderItem(3, new QStandardItem("电话"));
    //添加数据
    model->setItem(0, 0, new QStandardItem("张三"));
    model->setItem(0, 1, new QStandardItem("25"));
    model->setItem(0, 2, new QStandardItem("男"));
    model->setItem(0, 3, new QStandardItem("13812345678"));
    model->setItem(1, 0, new QStandardItem("李四"));
    model->setItem(1, 1, new QStandardItem("26"));
    model->setItem(1, 2, new QStandardItem("女"));
    model->setItem(1, 3, new QStandardItem("13812345679"));


    //设置模型到表格视图
    ui->tableView->setModel(model);
    //设置大小
    ui->tableView->resizeColumnsToContents();//根据内容调整列的大小
    ui->tableView->resizeRowsToContents();//根据内容调整行的大小
    //设置禁止编辑
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//无编辑触发器
    //排序
    ui->tableView->setSortingEnabled(true);//设置排序已启用
}

Column View:列视图。

Undo View:撤销视图。

Input Widgets控件(Input Widgets)

在这里插入图片描述

List Widget:清单控件

Tree Widget:树控件

Table Widget:表控件

List Widget:清单控件。

头文件:

#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

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //注释: 这里是添加一个新的 QListWidgetItem 到 QListWidget 中
    QListWidgetItem *item = new QListWidgetItem(ui->listWidget);
    item->setText("New Item");
    item->setTextAlignment(Qt::AlignCenter);

    //注释: 这里是添加多个 QListWidgetItem 到 QListWidget 中
    QStringList list;
    list << "Item 1" << "Item 2" << "Item 3";
    ui->listWidget->addItems(list);
}

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

Tree Widget:树控件。

头文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTreeWidget>
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

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

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

    //去掉头部的标题
    ui->treeWidget->header()->close();

    QTreeWidgetItem *item1 = new QTreeWidgetItem(ui->treeWidget);
    item1->setText(0, "Item 1");
    item1->setCheckState(0, Qt::Checked);


    QTreeWidgetItem *item2 = new QTreeWidgetItem(ui->treeWidget);
    item2->setText(0, "Item 2");
    item2->setCheckState(0, Qt::Checked);
    QTreeWidgetItem *item3 = new QTreeWidgetItem(item2);
    item3->setText(0, "Item 3");
    item3->setCheckState(0, Qt::Checked);
    QTreeWidgetItem *item4 = new QTreeWidgetItem(item2);
    item4->setText(0, "Item 4");
    item4->setCheckState(0, Qt::Checked);
    QTreeWidgetItem *item5 = new QTreeWidgetItem(item4);
    item5->setText(0, "Item 5");
    item5->setCheckState(0, Qt::Checked);
    QTreeWidgetItem *item6 = new QTreeWidgetItem(item4);
    item6->setText(0, "Item 6");
    item6->setCheckState(0, Qt::Checked);
    QTreeWidgetItem *item7 = new QTreeWidgetItem(item6);
    item7->setText(0, "Item 7");
    item7->setCheckState(0, Qt::Checked);

    //设置默认展开
    ui->treeWidget->expandAll();
    
}

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


Table Widget:表控件。

#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

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //设置表格的列数和行数
    ui->tableWidget->setColumnCount(3);//设置列数
    ui->tableWidget->setRowCount(10);//设置行数
    //设置表格的标题
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
    //设置单元格的值
    ui->tableWidget->setItem(0,0,new QTableWidgetItem("张三"));
    ui->tableWidget->setItem(0,1,new QTableWidgetItem("男"));
    ui->tableWidget->setItem(0,2,new QTableWidgetItem("25"));
    ui->tableWidget->setItem(1,0,new QTableWidgetItem("李四"));
    ui->tableWidget->setItem(1,1,new QTableWidgetItem("女"));
    ui->tableWidget->setItem(1,2,new QTableWidgetItem("30"));
    ui->tableWidget->setItem(2,0,new QTableWidgetItem("王五"));
    ui->tableWidget->setItem(2,1,new QTableWidgetItem("男"));
    ui->tableWidget->setItem(2,2,new QTableWidgetItem("20"));

    //循环设置数据
    for(int i=3;i<6;i++) {
        for (int j = 0; j < 3; j++) {
            ui->tableWidget->setItem(i, j, new QTableWidgetItem(QString("第%1行第%2列").arg(i).arg(j)));

        }

    }
}

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

Input Widgets控件(Input Widgets)

在这里插入图片描述

Combo Box:组合框

Font Combo Box:字体组合框

Line Edit:行编辑框

Text Edit:文本编辑框

Plain Text Edit:纯文本编辑框

Spin Box:数值框

Double Spin Box:双精度数值框

Date Edit:日期编辑框

Time Edit:时间编辑框

DateTime Edit:日期时间编辑框

Dial:拨号盘

Horizonal Slider Bar: 水平滑动条

Vertical Slider Bar: 垂直滑动条

Horizontal Slider: 水平滑块

Vertical Slider: 垂直滑块

File Dialog:文件对话框

Key Sequence Edit:快捷键编辑框

Combo Box:组合框

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QComboBox>
# include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    QComboBox *comboBox; //定义一个QComboBox对象
    Ui::MainWindow *ui;
private slots:
    void combBoxChanged(int); //槽函数
};
#endif // MAINWINDOW_H

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("My App");
    this->setGeometry(0,0,400, 300);

    //测试Combo Box
    QComboBox *comboBox = new QComboBox(this);//创建ComboBox对象
    comboBox->setGeometry(100, 100, 100, 30);//设置位置和大小
    comboBox->addItem("Item1");//添加选项
    comboBox->addItem("Item2");
    comboBox->addItem("Item3");
    comboBox->addItem("Item4");
    comboBox->addItem("Item5");
    //测试信号与槽
    connect(comboBox, SIGNAL(currentIndexChanged(int)),
            this, SLOT(combBoxChanged(int)));//连接信号与槽

}
void MainWindow::combBoxChanged(int index){
    qDebug() << "选择了第" << index << "项";
}//槽函数

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

Font Combo Box:字体组合框

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#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:
    QFontComboBox *fontComboBox;
    QLabel *label;
    Ui::MainWindow *ui;
private slots:
    void FontFunc(QFont);
};
#endif // MAINWINDOW_H

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

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

    fontComboBox = new QFontComboBox(this);
    label=new QLabel(this);
    fontComboBox->setGeometry(10,10,100,30);
    label->setGeometry(10,50,200,30);

    connect(fontComboBox, SIGNAL(currentFontChanged(QFont)),
            this, SLOT(FontFunc(QFont)));

}
void MainWindow::FontFunc(QFont font){

    label->setFont(font);
    QString text="Hello World";
    label->setText(text);
}



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

Line Edit:行编辑框

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLineEdit>
#include <QPushButton>
#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:
    QLineEdit *lineEdit;
    QPushButton *pushButton;
    QLabel *label;
    Ui::MainWindow *ui;

private slots:
    void on_pushButton_clicked();

};
#endif // MAINWINDOW_H

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

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

    lineEdit = new QLineEdit(this);
    lineEdit->setGeometry(QRect(10, 10, 100, 30));
    pushButton = new QPushButton(this);
    pushButton->setGeometry(QRect(10, 50, 100, 30));
    pushButton->setText("Click me");
    connect(pushButton, SIGNAL(clicked()),
            this, SLOT(on_pushButton_clicked()));

    label = new QLabel(this);
    label->setGeometry(QRect(10, 90, 100, 30));
    label->setText("Hello World!");

}

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


void MainWindow::on_pushButton_clicked(){
    QString text = "输入:"+lineEdit->text();
    label->setText(text);
}



Text Edit:文本编辑框

Plain Text Edit:纯文本编辑框

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPlainTextEdit> //功能:显示文本框
#include <QRadioButton> //功能:单选按钮
#include <QDir>//功能:文件目录
#include <QTextStream>//功能:文本流
#include <QCoreApplication>//功能:应用

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    QPlainTextEdit *textEdit;
    QRadioButton *radioButton;

    Ui::MainWindow *ui;


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

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

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

    textEdit=new QPlainTextEdit(this);//创建文本编辑器
    textEdit->setPlainText("Hello World!");//设置文本编辑器初始内容
    textEdit->setGeometry(10,10,300,300);//设置文本编辑器位置和大小

    radioButton=new QRadioButton(this);//创建单选按钮
    radioButton->setText("只读");//设置单选按钮文本
    radioButton->setGeometry(350,0,100,30);//设置单选按钮位置和大小

    //设置工作目录为可执行程序的目录
    QDir::setCurrent(QCoreApplication::applicationDirPath());
    QFile file("cmake_install.cmake");//读取文件
    file.open(QIODevice::ReadOnly | QIODevice::Text);//打开文件
    //加载文件内容到文本编辑器
    QTextStream in(&file);
    textEdit->setPlainText(in.readAll());




    //连接单选按钮点击信号与槽函数
    connect(radioButton,SIGNAL(clicked()),
            this,SLOT(QRadioButtonClicked()));

}


void MainWindow::QRadioButtonClicked(){
    //设置文本编辑器是否只读
    if(radioButton->isChecked()){
        textEdit->setReadOnly(true);
    }else{
        textEdit->setReadOnly(false);
    }
}


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

Spin Box:数值框

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#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:
    QSpinBox *spinBox;
    Ui::MainWindow *ui;


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

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

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

    spinBox = new QSpinBox(this);
    spinBox->setGeometry(100, 100, 200, 30);
    //设置范围
    spinBox->setRange(0, 100);
    //设置步长
    spinBox->setSingleStep(5);
    //设置初始值
    spinBox->setValue(100);
    //设置标签
    spinBox->setPrefix("透明度:");//设置前缀
    spinBox->setSuffix(" %");//设置后缀

    connect(spinBox, SIGNAL(valueChanged(int)),
            this, SLOT(on_spinBox_valueChanged(int)));
}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::on_spinBox_valueChanged(int value){
    //根据值修改窗口背景透明度
    this->setWindowOpacity((double)value/100.0);
}

Double Spin Box:双精度数值框

Date Edit:日期编辑框

Time Edit:时间编辑框

DateTime Edit:日期时间编辑框

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
//时间相关
#include <QDateTime>
#include <QTimeEdit>
#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:
    QDateTimeEdit *dateTimeEdit1;
    QTimeEdit *timeEdit1;
    QDateEdit *dateEdit1;
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

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

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

    //初始化一个QDateTimeEdit控件参数是当前时间
    dateTimeEdit1= new QDateTimeEdit(QDateTime::currentDateTime(), this);
    dateTimeEdit1->setGeometry(10, 10, 300, 30);

    timeEdit1= new QTimeEdit(QTime::currentTime(), this);
    timeEdit1->setGeometry(10, 50, 300, 30);

    dateEdit1= new QDateEdit(QDate::currentDate(), this);
    dateEdit1->setGeometry(10, 90, 300, 30);



    //设置控件的显示格式
    dateTimeEdit1->setDisplayFormat("yyyy-MM-dd HH:mm:ss");
    timeEdit1->setDisplayFormat("HH:mm:ss");
    dateEdit1->setDisplayFormat("yyyy-MM-dd");

}

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



Dial:拨号盘

Horizonal Slider Bar: 水平滑动条

Vertical Slider Bar: 垂直滑动条

Horizontal Slider: 水平滑块

Vertical Slider: 垂直滑块

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#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:
    QScrollBar *verticalScrollBar;//垂直滚动条
    QScrollBar *horizontalScrollBar;//水平滚动条
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

#include <QStyleOptionSlider>
#include "mainwindow.h"
#include "./ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    verticalScrollBar=new QScrollBar(Qt::Vertical,this);//创建垂直滚动条
    verticalScrollBar->setGeometry(10,10,10,1000);
    verticalScrollBar->setRange(0,100);//设置滚动条范围
    verticalScrollBar->setValue(0);//设置滚动条初始值

    horizontalScrollBar=new QScrollBar(Qt::Horizontal,this);//创建水平滚动条
    horizontalScrollBar->setGeometry(10,10,1000,10);
    horizontalScrollBar->setRange(0,100);//设置滚动条范围
    horizontalScrollBar->setValue(0);//设置滚动条初始值




}

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

File Dialog:文件对话框

Key Sequence Edit:快捷键编辑框

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#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:
    QKeySequenceEdit *keySequenceEdit;
    Ui::MainWindow *ui;


private slots:
    void keySequenceEditChanged(const QKeySequence & keySequence);
};
#endif // MAINWINDOW_H

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

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

    keySequenceEdit=new QKeySequenceEdit(this);
    keySequenceEdit->setGeometry(10,10,200,100);

    connect(keySequenceEdit,SIGNAL(keySequenceChanged(const QKeySequence &)),
            this,SLOT(keySequenceEditChanged(const QKeySequence &)));
}

void MainWindow::keySequenceEditChanged(const QKeySequence &key){
    if(!key.isEmpty()){//如果输入的快捷键为空,则不做任何处理
        if(key==QKeySequence(tr("Ctrl+Shift+A"))){ //tr()函数:用于翻译字符串 QKeySequence()函数:用于创建QKeySequence对象
            this->close();
        } else{
            qDebug()<<key.toString();
        }
    }
}



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

Display Widgets: 显示控件

在这里插入图片描述

Label:标签

Text Browser:文本浏览器

Graphics View:图形视图

Calendar Widget:日历控件

LCD Number:LCD数字

Progress Bar:进度条

Status Bar:状态栏

Horizontal Line : 水平线

Vertical Line : 垂直线

OpenGl Widget : OpenGL控件

QQuickWidget : Qt Quick控件

Label:标签

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMessageBox>
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 slots:
    void textlablefunc();
};
#endif // MAINWINDOW_H

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

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

void MainWindow::textlablefunc(){
    QString fname = "A:\\QT_WORK\\q42\\image\\1.png";

    //创建QImage对象 功能是加载图片
    QImage *image = new QImage();
    //判断图片是否加载成功
    if(!image->load(fname)){
        qDebug() << "Failed to load image";
        QMessageBox::information(this, "Error", "Failed to load image");
        delete image;
        return;
    }
    //设置label的大小是图片的大小
    //ui->label->setFixedSize(image->width(), image->height());

    //图片适配label大小
    ui->label->setScaledContents(true);

    ui->label->setPixmap(QPixmap::fromImage(*image));

}



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

Text Browser:文本浏览器

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFile>
#include <QMessageBox>
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 slots:
    void textbrowserFunc();

};
#endif // MAINWINDOW_H

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

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

void MainWindow::textbrowserFunc(){

    //存储文件内容
    QString strData;

    QFile file("A:\\QT_WORK\\q43\\text.txt");

    //打开文件
    if(file.open(QIODevice::ReadOnly | QIODevice::Text)){

        QMessageBox::information(this, "提示", "文件打开成功!", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
    }else{
        QMessageBox::warning(this, "警告", "文件打开失败!", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
        return;
    }
    //读取文件内容 atEnd()判断文件是否读取完毕
    while (!file.atEnd()){
        //读取一行内容到二进制数组中
        QByteArray line= file.readLine();
        QString strs(line);//将二进制数组转换为字符串
        strData.append(strs);
    }

    //显示文件内容
    ui->textBrowser->setText(strData);

}

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

Graphics View:图形视图

Calendar Widget:日历控件

LCD Number:LCD数字

#ifndef MAINWINDOW_H
#define MAINWINDOW_H



#include <QMainWindow>
#include <QLCDNumber>
#include <QTimer>
#include <QPushButton>
#include <QVBoxLayout>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    QLCDNumber *lcdNumber;
    QTimer *timer;
    QPushButton *startButton;
    QPushButton *stopButton;
    QPushButton *cleanButton;
    int seconds;
private slots:
    void updateTimer();
    void startTimer();
    void stopTimer();
    void cleanTimer();

};
#endif // MAINWINDOW_H

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

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent),seconds(0)

{
    // 创建QLCDNumber控件
    lcdNumber = new QLCDNumber(this);
    lcdNumber->setDigitCount(5);//设置显示的数字位数
    lcdNumber->setSegmentStyle(QLCDNumber::Flat); //设置显示样式为平面样式
    lcdNumber->display("00000");//设置初始显示值

    // 创建开始和停止按钮
    startButton = new QPushButton("开始", this);
    stopButton = new QPushButton("停止", this);
    cleanButton = new QPushButton("重置", this);

    // 连接按钮的点击信号到槽函数
    connect(startButton, &QPushButton::clicked, this, &MainWindow::startTimer);
    connect(stopButton, &QPushButton::clicked, this, &MainWindow::stopTimer);
    connect(cleanButton, &QPushButton::clicked, this, &MainWindow::cleanTimer);
    // 创建一个定时器
    timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, &MainWindow::updateTimer);

    // 设置布局
    QVBoxLayout *mainLayout = new QVBoxLayout; // 创建一个垂直布局
    mainLayout->addWidget(lcdNumber); //将QLCDNumber控件添加到布局中

    QHBoxLayout *buttonLayout = new QHBoxLayout; // 创建一个水平布局
    buttonLayout->addWidget(startButton);
    buttonLayout->addWidget(stopButton);
    buttonLayout->addWidget(cleanButton);

    mainLayout->addLayout(buttonLayout); // 将按钮布局添加到布局中


    // 创建一个中心窗口并设置布局
    QWidget *centralWidget = new QWidget(this);
    centralWidget->setLayout(mainLayout);
    this->setCentralWidget(centralWidget);//将中心窗口设置为主窗口

}

void MainWindow::updateTimer(){
    seconds++;
    lcdNumber->display(QString::number(seconds));
}

void MainWindow::startTimer(){
    //seconds = 0;
    lcdNumber->display(++seconds);
    timer->start(1000); // 每秒更新一次
}
void MainWindow::stopTimer(){
    timer->stop();
}

void MainWindow::cleanTimer(){
    seconds = 0;
    lcdNumber->display("00000");
}


MainWindow::~MainWindow()
{

}

Progress Bar:进度条

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#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 slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

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

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

    //进度条初始化
    ui->progressBar->setValue(0);
    //设置进度条范围
    ui->progressBar->setRange(0, 100000);

    ui->pushButton->setText("开始");

}

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

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


Status Bar:状态栏

#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:
    void setupStatusBar();
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

#include <QPushButton>
#include <QLabel>
#include "mainwindow.h"
#include "./ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("状态栏示例");

    QPushButton *butt=new QPushButton("按钮",this);
    //设置按钮大小
    butt->setFixedSize(100,30);
    //设置按钮的位置
    this->setCentralWidget(butt);//设置中心窗口

    connect(butt, &QPushButton::clicked,
            this,
            [this]() {
        this->statusBar()->showMessage("按钮被点击了", 3000); // 显示消息3秒
    });

    setupStatusBar();//初始化状态栏
}

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

void MainWindow::setupStatusBar(){
    QStatusBar *statusBar = new QStatusBar(this);//创建状态栏
    this ->setStatusBar(statusBar);//设置状态栏

    // 在状态栏中添加一个永久部件
    QLabel *permanentLabel = new QLabel("就绪", this);
    statusBar->addPermanentWidget(permanentLabel);

    // 初始显示消息
    statusBar->showMessage("欢迎使用状态栏", 5000); // 显示消息5秒
}

Horizontal Line : 水平线

Vertical Line : 垂直线

OpenGl Widget : OpenGL控件

QQuickWidget : Qt Quick控件

  • 28
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可能只会写BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值