QT控件认识

QT控件认识

学习控件需要培养起来查帮助文档的习惯

首先我们查父类,按照以下顺序

信号->槽函数->public function->others

按钮

image-20230811212601338

image-20230803091229228

QAbstractButton

  1. 槽函数

    image-20230803092521012

  2. 信号

    image-20230803092957579

QPushButton

  1. 普通的按钮,继承于QAstrctButton

  2. 下面是具体的用法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    qtTest_control::qtTest_control(QWidget *parent)
    : QMainWindow(parent)
    {
    ui.setupUi(this);

    //普通按钮
    ui.nomalBtu->setText("屌丝");
    ui.nomalBtu->setIcon(QIcon(":/1"));



    //check按钮
    ui.checkBtn->setCheckable(true);//设置成可选中的状态,也就是颜色会加深
    ui.checkBtn->setText("屌丝二号");
    ui.checkBtn->setIcon(QIcon(":/2"));

    connect(ui.checkBtn, &QPushButton::toggled, this, [=]() {
    QMessageBox::information(this, "check","你是大屌丝二号");

    });//当点击的是子图标,发出信号


    //关联按钮
    QMenu* menuForwithMenu = new QMenu(nullptr);
    QAction* act1=menuForwithMenu->addAction(QIcon("://3"), "选项一");
    ui.withMenu->setMenu(menuForwithMenu);
    connect(act1, &QAction::triggered, this, [=]() {
    QMessageBox::information(this, "选项", "这个是选项一");
    });



    }

QToolButton

  1. 加强版的QPushButton,并且做的更漂亮

  2. 设置图标的方式

    image-20230803141949916

  3. 下面是一些具体的做法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    //toolButton   图片
    QAction* atc2 = new QAction(QIcon(":/4"),"图片按钮");
    ui.pictureToolBtn->setDefaultAction(atc2);
    connect(atc2, &QAction::triggered, this, [=]() {
    atc2->setIcon(QIcon(":/5"));
    atc2->setText("新的图片");
    });
    ui.pictureToolBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);


    //toolButton 箭头
    ui.arrowBtn->setArrowType(Qt::UpArrow);
    ui.arrowBtn->setText("向上");
    ui.arrowBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

    connect(ui.arrowBtn, &QToolButton::clicked, this, [=]() {
    if (ui.arrowBtn->arrowType() == Qt::UpArrow) {
    ui.arrowBtn->setArrowType(Qt::DownArrow);
    ui.arrowBtn->setText("向下");
    ui.arrowBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    }
    else {
    ui.arrowBtn->setArrowType(Qt::UpArrow);
    ui.arrowBtn->setText("向上");
    ui.arrowBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    }
    });

    由于这个button和pushButton的效果都差不多,就只描述了不一样的一些东西

    下面是他们的样子

    image-20230803142206611

  4. 弹出菜单的形式以及clicked信号的捕捉

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
        // toolButton   弹出菜单
    ui.menuToolBtn->setMenu(menuForwithMenu);
    /*
    弹出菜单的弹出模式是一个枚举类型: QToolButton::ToolButtonPopupMode, 取值如下:
    - QToolButton::DelayedPopup:
    - 延时弹出, 按压工具按钮一段时间后才能弹出, 比如:浏览器的返回按钮
    - 长按按钮菜单弹出, 但是按钮的 clicked 信号不会被发射
    - QToolButton::MenuButtonPopup:
    - 在这种模式下,工具按钮会显示一个特殊的箭头,表示有菜单。
    - 当按下按钮的箭头部分时,将显示菜单。按下按钮部分发射 clicked 信号
    - QToolButton::InstantPopup:
    - 当按下工具按钮时,菜单立即显示出来。
    - 在这种模式下,按钮本身的动作不会被触发(不会发射clicked信号
    */
    //检测什么时候有信号
    ui.menuToolBtn->setPopupMode(QToolButton::InstantPopup);
    connect(ui.menuToolBtn, &QToolButton::clicked, this, [=]() {
    QMessageBox::information(this, "成功", "检查到信号");
    });

    //检查结果,默认的延迟菜单,当点击的时候有信号但是我们长安的时候没有信号(QToolButton::DelayedPopup:)
    // 当带有箭头的按钮的时候,点击非按钮区有信号,点击箭头没有信号( - QToolButton::MenuButtonPopup:)
    // 无论什么形式的点击都不会有信号(QToolButton::InstantPopup:)
    //

QRadioButton

这个按钮是一个单选按钮,没有自己的信号,槽函数,和公共函数,所有的东西都是继承于QAbstractButton,主要是用于按钮组当中

对于单选按钮的分组,通常将按钮放置于不同的容器当中,每个容器当中的按钮就是一组

image-20230811211222605

通常使用下面这个容器,因为可以提供标题

image-20230811212108272

QCheckBox

复选框按钮,也就是支持多选

对于单选按钮来说,QCheckBox支持选中后取消选中


QT控件认识
https://tsy244.github.io/2023/08/03/QT/QT控件认识/
Author
August Rosenberg
Posted on
August 3, 2023
Licensed under