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);
}
结果:
其他关于按钮的讲解: