Buttons

QAbstractButton类是按钮部件的抽象基类,体现了一个抽象的按钮,提供了按钮的所有功能

QAbstractButton提供了点击和勾选按钮,QRadioButton和QCheckBox类只提供了勾选按钮, QPushButton和QToolButton提供了点击按钮

任何按钮都可以显示一个包含文本和图标的标签 , setText() 用来设置文本
setIcon()可以设置图标如果按钮被禁用,其标签更改为 ”disabled“ 的样式

QAbstractButton的常用状态分为以下两个:
isDown() 按钮是否被按下
isChecked() 按钮是否被选中

pushButton

SetText() 设置文字
SetMenu 设置菜单
Clicked信号

在这里插入图片描述
这个按钮命名就叫做了pushButton

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

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 按钮
    ui->pushButton->setText(QObject::tr("搜狗拼音"));
    //菜单 搜狗拼音
    QMenu *pMenu = new QMenu(this);
    //QObject::tr()  和  QStringLiteral  都是用来显示中文的方法
    pMenu->addAction(QStringLiteral("显示语言栏"));
    pMenu->addSeparator();   //设置一个分割线

    // ctrl+ alt + 下键  直接复制当前行到下一行
    pMenu->addAction(QStringLiteral("搜狗拼音输入法"));
    pMenu->addAction(QStringLiteral("美式键盘"));

    // 设置菜单
    ui->pushButton->setMenu(pMenu);
}

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

QToolButton

QToolButton类提供了用于命令或选项可以快速访问的按钮,通常可以用在QToolBar里面

setIcon 设置图标
SetText 设置文字
SetMenu 设置菜单
setPopupModel(ToolButtonPopupMode mode) 设置弹出模式
setButtonStyle 设置按钮样式

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

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 按钮
    ui->pushButton->setText(QObject::tr("搜狗拼音"));
    //菜单 搜狗拼音
    QMenu *pMenu = new QMenu(this);
    //QObject::tr()  和  QStringLiteral  都是用来显示中文的方法
    pMenu->addAction(QStringLiteral("显示语言栏"));
    pMenu->addSeparator();   //设置一个分割线

    // ctrl+ alt + 下键  直接复制当前行到下一行
    pMenu->addAction(QStringLiteral("搜狗拼音输入法"));
    pMenu->addAction(QStringLiteral("美式键盘"));

    // 设置菜单
    ui->pushButton->setMenu(pMenu);

    ui->toolButton->setMenu(pMenu);
    ui->toolButton->setText("hello");
    // toolButton弹出菜单默认是一个延迟弹出
    // 可以使用popupmode来更改
    ui->toolButton->setPopupMode(QToolButton::InstantPopup);
    // 设置个图标样式
    ui->toolButton->setArrowType(Qt::RightArrow);
    // 设置按钮和文本的位置
    ui->toolButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
}

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

QCheckBox

QCheckBox(复选框) 是选项按钮 ,状态分为选中和未选中,复选框一般用于在多个中选择多个

setText()
Qt::CheckState checkState() const 返回选中状态
setCheckState() 函数
stateChanged() 信号

QMainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

private slots:
    void slotCheckBoxStateChanged(int state);
};



#endif // MAINWINDOW_H

mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<qdebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 按钮
    ui->pushButton->setText(QObject::tr("搜狗拼音"));
    //菜单 搜狗拼音
    QMenu *pMenu = new QMenu(this);
    //QObject::tr()  和  QStringLiteral  都是用来显示中文的方法
    pMenu->addAction(QStringLiteral("显示语言栏"));
    pMenu->addSeparator();   //设置一个分割线

    // ctrl+ alt + 下键  直接复制当前行到下一行
    pMenu->addAction(QStringLiteral("搜狗拼音输入法"));
    pMenu->addAction(QStringLiteral("美式键盘"));

    // 设置菜单
    ui->pushButton->setMenu(pMenu);

    ui->toolButton->setMenu(pMenu);
    ui->toolButton->setText("hello");
    // toolButton弹出菜单默认是一个延迟弹出
    // 可以使用popupmode来更改
    ui->toolButton->setPopupMode(QToolButton::InstantPopup);
    // 设置个图标样式
    ui->toolButton->setArrowType(Qt::RightArrow);
    // 设置按钮和文本的位置
    ui->toolButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);



    //设置复选框的字体和状态
    ui->checkBox->setText(QObject::tr("未选中"));
    ui->checkBox->setCheckState(Qt::Unchecked);
    if(ui->checkBox->checkState() == Qt::Unchecked)
    {
        qDebug()<<"checkbox unchecked\n";
    }

    connect(ui->checkBox,SIGNAL(stateChanged(int)),this,SLOT(slotCheckBoxStateChanged(int)));


}

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

//下面定义一个槽
void MainWindow::slotCheckBoxStateChanged(int state)
{
    if(state==Qt::Checked)
    {
        ui->checkBox->setText(QObject::tr("选中"));
    }
    else{
        ui->checkBox->setText(QObject::tr("未选中"));
    }

}

QRadioButton

QRadioButton(单选框)是选项按钮,状态分为选中和未选中,单选框一般用于在多个中选择一个
setText()
isChecked()
clicked()

mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

private slots:
    void slotCheckBoxStateChanged(int state);
    void slotRadioButtonClicked(bool);
    void slotRadioButtonClicked_2(bool);
};



#endif // MAINWINDOW_H

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<qdebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // 按钮
    ui->pushButton->setText(QObject::tr("搜狗拼音"));
    //菜单 搜狗拼音
    QMenu *pMenu = new QMenu(this);
    //QObject::tr()  和  QStringLiteral  都是用来显示中文的方法
    pMenu->addAction(QStringLiteral("显示语言栏"));
    pMenu->addSeparator();   //设置一个分割线

    // ctrl+ alt + 下键  直接复制当前行到下一行
    pMenu->addAction(QStringLiteral("搜狗拼音输入法"));
    pMenu->addAction(QStringLiteral("美式键盘"));

    // 设置菜单
    ui->pushButton->setMenu(pMenu);

    ui->toolButton->setMenu(pMenu);
    ui->toolButton->setText("hello");
    // toolButton弹出菜单默认是一个延迟弹出
    // 可以使用popupmode来更改
    ui->toolButton->setPopupMode(QToolButton::InstantPopup);
    // 设置个图标样式
    ui->toolButton->setArrowType(Qt::RightArrow);
    // 设置按钮和文本的位置
    ui->toolButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);



    //设置复选框的字体和状态
    ui->checkBox->setText(QObject::tr("未选中"));
    ui->checkBox->setCheckState(Qt::Unchecked);
    if(ui->checkBox->checkState() == Qt::Unchecked)
    {
        qDebug()<<"checkbox unchecked\n";
    }

    connect(ui->checkBox,SIGNAL(stateChanged(int)),this,SLOT(slotCheckBoxStateChanged(int)));
    connect(ui->radioButton,SIGNAL(clicked(bool)),this,SLOT(slotRadioButtonClicked(bool)));
    connect(ui->radioButton_2,SIGNAL(clicked(bool)),this,SLOT(slotRadioButtonClicked_2(bool)));

}

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

//下面定义一个槽
void MainWindow::slotCheckBoxStateChanged(int state)
{
    if(state==Qt::Checked)
    {
        ui->checkBox->setText(QObject::tr("选中"));
    }
    else{
        ui->checkBox->setText(QObject::tr("未选中"));
    }

}

void MainWindow::slotRadioButtonClicked(bool)
{
    if(ui->radioButton->isChecked()==true)
    {
        ui->radioButton->setText((QObject::tr("选中")));
        ui->radioButton_2->setText((QObject::tr("未选中")));
    }

}

void MainWindow::slotRadioButtonClicked_2(bool)
{
    if(ui->radioButton_2->isChecked()==true)
    {
        ui->radioButton->setText((QObject::tr("未选中")));
        ui->radioButton_2->setText((QObject::tr("选中")));
    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

新城里的旧少年^_^

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

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

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

打赏作者

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

抵扣说明:

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

余额充值