Qt按钮控件

QPushButton

        普通下压按钮,本例中通过lambda表达式,按下按钮后改变表格颜色。

QToolButton

        工具按钮(QToolButton )区别于普通按钮 QPushButton )的一点是,工具按钮QToolButton
可以带图标 。这里区别下图标和按钮的背景图片是不一样的。通常我们在 Q T oolBar 这种工具条
(工具栏)上设置不同的按钮,如果这些按钮还带图标和文本,那么 QToolButton 是个不错的
选择。本例中使用了一个系统自带的“帮助”图标,设置成图标在按钮名称上面的布局;其中用到了QStyle用于获取和设置控件风格。

QRadioButton

        QRadioButton单选按钮是一个可以切换选中( checked )或未选中 unchecked )状态的选项按钮。单选框通常呈现给用户一个“多选一”的选择。也就是说,在一组单选框中,一次只能选中一个单选框。默认在同一个父对象下,初始化后点击它们是互斥状态。在例子中添加了Qt Resource File文件和图片,添加了qss文件,使用QFile类读取qss文件,qss文件内书写了QRadioButton类的样式格式。

QCheckBox

        QCheckBox复选按钮(复选框)与 RadioB utton 的区别是选择模式,单选按钮提供多选一,复选按钮提供多选多。在本例中和QRadioButton一样添加了图片,在qss文件中也有对QCheckBox类的样式格式描述。

QCommandLinkButton

        QCommandLinkButton 控件中文名是“命令链接按钮” 。 CommandLinkButton 控件和 RadioButton 相似,都是用于在互斥选项中选择一项。表面上同平面按钮一样,但是 CommandLinkButton 除带有正常的 按钮上的文字描述文本外,默认情况下, 它也将携带一个箭头图标 ,表明按下按钮将打开另一个窗口或页面。本例中使用了QDesktopServices类,该类提供了访问常见桌面服务的函数,即调用电脑上的程序打开指定文件,本例子中点击 QCommandLinkButton 按钮后会调用浏览器打开百度、文件夹和一个pdf文件,其中QUrl类用于处理url链接。

QDialogButtonBox

QDialogButtonBox按钮盒通常以符合该平台界面指导原则的布局呈现按钮。不同平台的对话框总是有不同的布局。 QDialogButtonBox 允许开发人员向其添加按钮,并将自动使用适合用户桌面环
境的布局。 也就是说我们可以使用系统的自带的对话框按钮,也可以自己定义对话框按钮。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QTableWidget"     //表格
#include "QPushButton"      //按钮
#include "QTableWidgetItem" //表格单元格项
#include "QToolButton"      //工具按钮
#include "QStyle"           //控件风格
#include "QIcon"            //图片控件
#include "QRadioButton"     //单选按钮控件
#include "QListWidgetItem"
#include "QListWidget"
#include "QFile"
#include "QDebug"
#include "QCheckBox"
#include "QCommandLinkButton"//命令链接按钮
#include "QDesktopServices" //该类提供的函数用于访问常见的桌面服务
#include "QUrl"             //该类用于处理url链接
#include "QDialogButtonBox" //按钮盒

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QTableWidget * qtablewidgest = new QTableWidget(6,2,this);
    this->resize(900,500);
    qtablewidgest->resize(900,500);
    qtablewidgest->setHorizontalHeaderLabels(QStringList()<<"控件名称"<<"样式");

/***QPushButton下压按钮***/
    QPushButton *qpushbutton = new QPushButton("下压按钮",this);            //创建一个下压按钮
    QTableWidgetItem *qtablewidgetitem = new QTableWidgetItem("下压按钮");  //创建一个表格单元格项
    qtablewidgest->setCellWidget(0,1,qpushbutton);              //把按钮控件添加到表格中
    qtablewidgest->setItem(0,0,qtablewidgetitem);               //把表格单元格项添加到表格中
    qtablewidgetitem->setBackgroundColor(Qt::blue);             //设置表格单元格项的背景颜色
    connect(qpushbutton,&QPushButton::clicked,this,[=](){       //Lambda表达式信号和槽,按按钮则表格单元格项背景在黄和蓝间改变
        if(qtablewidgetitem->backgroundColor()==Qt::blue)
            qtablewidgetitem->setBackgroundColor(Qt::yellow);
        else qtablewidgetitem->setBackgroundColor(Qt::blue);}
    );

/***QToolButton工具按钮***工具按钮可以为按钮添加图标,注意是图标而不是背景,QPushbooton可以添加背景但不能添加图标*/
    QToolButton *qtoolbutton = new QToolButton;     //创建一个工具按钮
    qtablewidgest->setCellWidget(1,1,qtoolbutton);  //把工具按钮控件放到表格中
    QTableWidgetItem *qtablewidgetitem1 = new QTableWidgetItem("工具按钮");  //创建一个表格单元格项
    qtablewidgest->setItem(1,0,qtablewidgetitem1);               //把表格单元格项添加到表格中
    QStyle *qstyle = QApplication::style();                         //实例化QStyle类对象,用于设置风格调用系统自带的图标
    QIcon icon = qstyle->standardIcon(QStyle::SP_TitleBarContextHelpButton);//获取系统自带的帮助图标
    qtoolbutton->setIcon(icon);                                  //添加图标
    qtoolbutton->setText("帮助");                                 //设置按钮名字
    qtoolbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//设置按钮名称在图标下

/***单选按钮***选中或未选中两种状态,一组单选按钮中只有一个按钮会被选中*/
    QRadioButton *qradiobutton1 = new QRadioButton("选择1");  //实例化单选按钮1
    QRadioButton *qradiobutton2 = new QRadioButton("选择2");  //实例化单选按钮2
    QTableWidgetItem *qtablewidgetitem2 = new QTableWidgetItem("单选按钮");  //创建一个表格单元格项
    qtablewidgest->setItem(2,0,qtablewidgetitem2);               //把表格单元格项添加到表格中
    qradiobutton1->setChecked(true);    //初始化按钮为选择状态
    qradiobutton2->setChecked(false);   //初始化按钮为未选择状态
    QListWidgetItem *qlistwidgetitem1 = new QListWidgetItem();  //实例化列表项,列表每一项都是一个列表项
    QListWidgetItem *qlistwidgetitem2 = new QListWidgetItem();  //实例化列表项
    QListWidget *qlistwidget = new QListWidget();               //实例化列表
    qlistwidget->addItem(qlistwidgetitem1);        //添加列表项1
    qlistwidget->addItem(qlistwidgetitem2);        //添加列表项2
    qlistwidget->setItemWidget(qlistwidgetitem1,qradiobutton1); //把单选按钮添加到列表项
    qlistwidget->setItemWidget(qlistwidgetitem2,qradiobutton2); //把单选按钮添加到列表项
    qtablewidgest->setCellWidget(2,1,qlistwidget);              //将列表添加到表格上
    QFile file(":/style.qss");  //指向style.qss文件
    if (file.exists() ) {
        /* 以只读的方式打开 */
        file.open(QFile::ReadOnly);
        /* 以字符串的方式保存读出的结果 */
        QString styleSheet = QLatin1String(file.readAll());
        /* 设置全局样式 */
        qApp->setStyleSheet(styleSheet);
        /* 关闭文件 */
        file.close();  }
/***QCheckBox复选按钮**多选多*/
    QCheckBox *qcheckbox = new QCheckBox;
    QTableWidgetItem *qtablewidgetitem3 = new QTableWidgetItem("复选按钮");  //创建一个表格单元格项
    //qcheckbox->setChecked(true);  //初始化为选择状态
    qcheckbox->setCheckState(Qt::Checked);
    qcheckbox->setText("初始化为Checked状态");
    qcheckbox->setTristate();
    qtablewidgest->setItem(3,0,qtablewidgetitem3);              //把表格单元格项添加到表格中
    qtablewidgest->setCellWidget(3,1,qcheckbox);              //将列表添加到表格上
    connect(qcheckbox,&QCheckBox::clicked,qcheckbox,[=](){
        switch(qcheckbox->checkState()){
        case Qt::Checked:
            qcheckbox->setText("选中状态");
            break;
        case Qt::Unchecked:
            qcheckbox->setText("未选中状态");
            break;
        case Qt::PartiallyChecked:
            qcheckbox->setText("半选中状态");
            break;
        }
    });

/***QCommandLinkButton命令链接按钮**有按钮文本和一个箭头图标**/
    QCommandLinkButton *qcommandlinkbutton = new QCommandLinkButton("打开系统文件夹");
    QTableWidgetItem *qtablewidgetitem4 = new QTableWidgetItem("命令链接按钮");  //创建一个表格单元格项
    qtablewidgest->setItem(4,0,qtablewidgetitem4);              //把表格单元格项添加到表格中
    qtablewidgest->setCellWidget(4,1,qcommandlinkbutton);              //将列表添加到表格上
    connect(qcommandlinkbutton,&QCommandLinkButton::clicked,this,[=](){
        QDesktopServices::openUrl(QUrl("file:/") );       //使用合适的用户桌面环境打开文件夹
        QDesktopServices::openUrl(QUrl("www.baidu.com") );  //使用合适的用户桌面环境(浏览器)打开链接
        QDesktopServices::openUrl(QUrl("file:/./学习资料./QT./Qt 4.3 类继承图.pdf") );  //使用合适的用户桌面环境打开指定文件
    });

/***QDialogButtonBox按钮盒*可以添加按多个钮,设置布局**/
    QDialogButtonBox *qdialogbuttonbox = new QDialogButtonBox();
    QTableWidgetItem *qtablewidgetitem5 = new QTableWidgetItem("按钮盒");  //创建一个表格单元格项
    qtablewidgest->setItem(5,0,qtablewidgetitem5);              //把表格单元格项添加到表格中
    qtablewidgest->setCellWidget(5,1,qdialogbuttonbox);         //将列表添加到表格上
    qdialogbuttonbox->addButton(QDialogButtonBox::Ok);
    qdialogbuttonbox->addButton("按钮",QDialogButtonBox::ActionRole);  //添加按钮
    qdialogbuttonbox->setOrientation(Qt::Vertical);     //按钮盒内按钮排列方向
}
MainWindow::~MainWindow()
{
    delete ui;
}

qss文件内容:

​
QRadioButton{
 spacing: 5px;
 color: red;
 }
QRadioButton::indicator {
 width: 20;
 height: 20px;
 }
QRadioButton::indicator:unchecked {
 image: url(:/images/switch_off.png);
 }
QRadioButton::indicator:checked {
 image: url(:/images/switch_on.png);
 }
QCheckBox{
 spacing: 2px;
 color: blue;
 }
 QCheckBox::indicator{
 width: 20;
 height: 20px;
}
QCheckBox::indicator:enabled:unchecked{
 image: url(:/images/unchecked.png);
}
QCheckBox::indicator:enabled:checked{
 image: url(:/images/checked.png);
}
QCheckBox::indicator:enabled:indeterminate{
 image: url(:/images/indeterminate.png);
}

​

 

 

结果:

其他关于按钮的讲解:

QT开发(七)——QT按钮组件_生命不息,奋斗不止的技术博客_51CTO博客 

 Qt QListWidget列表框用法详解 (biancheng.net)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值