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("选中")));
}
}