Qt的按键组主要有6种,分别是:
QPushButton
QToolButton
QDadioButton
QCheckBox
QCommandLinkButton
QButtonBox
下面,将对各个空间进行简要的介绍以及使用方法
一,Push Button
此控件通常用得是最多,每个软件基本少不了与用户交互最普遍的控件就是按键。
要使用此控件,主要是进行如下步骤
1、包含QPushButton类
2、定义QPushButton 对象
3、设置QPushButton对象的显示、大小、大小范围、字体等属性
4、设置QPushButton所放置的layout布局、坐标
5、定义QPushButton的槽函数
下面进行实例演示
1、新建工程,快捷键可以使用ctrl+N,也可以点击菜单中:文件---新建文件或项目--Application--Qt Widget Application--choose, 然后修改名称和路径(注意路径最好是全英文),接下来按下一步配置编译器(默认就好), 下一步,选择基类为Dialog,取消创建界面选框(不适用ui设计),下一步,完成
2、首先在头文件包含"QPushButton"类,然后再类定义中定义一个QPushButton对象,定义一个槽函数show_btn()
红框内为新添加代码
然后再c文件为对象分配内存,并且设置对象显示名称为”按键“
编译运行,就可以看到具有一个按键的窗体了
因为没有设置属性,所以按键被设置为默认属性
例如设置按键的几何大小
btn->setGeometry(100, 100, 100, 100);设置按键的字体
btn->setFont(QFont("ALLs", 18, QFont::Black));
最后来设置槽函数
编译运行,当按下按键后,按键的名称就变为”按下“了
头文件
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QPushButton>
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
~Dialog();
private:
QPushButton *btn;
private slots:
void show_btn(void);
};
#endif // DIALOG_H
Cpp文件
#include "dialog.h"
#include "QFont"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
btn = new QPushButton(tr("按键"), this);
btn->setGeometry(200, 200, 200, 200);
btn->setFont(QFont("ALLs", 18, QFont::Black));
connect(btn, SIGNAL(clicked(bool)), this, SLOT(show_btn()));
}
Dialog::~Dialog()
{
}
void Dialog::show_btn()
{
static bool is_push;
if(is_push) {
btn->setText(tr("按下"));
is_push = false;
}
else {
btn->setText(tr("没按下"));
is_push = true;
}
}
二、QToolButton类提供了用于命令或者选项的可以快速访问的按钮,通常可以用在QToolBar里面
接着上面的工程,在构造函数中添加以下代码,同时需要包含QToolButton类
QToolButton *pButton = new QToolButton(this);
pButton->setArrowType(Qt::LeftArrow);
pButton->setText(tr("按下"));
pButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
pButton->setStyleSheet("QToolButton{border: none; background: rgb(68, 69, 73); color: rgb(0, 160, 230);}");
效果如下图所示:
三、QRadioButton类提供了互斥型或者非互斥型的按键选择,如果用户需要对某几个RadioButton进行控制,需要把这几个用GroupBox或者ButtonBox
框起来,而RadioButton默认是父窗口的所有RadioButton互斥
使用方法,定义一个QRadioButton对象,申请内存,定义坐标大小,设置默认是选中还是非选中等等
rdo1_btn = new QRadioButton(this);
rdo1_btn->setGeometry(150, 150, 20, 20);
rdo1_btn->setChecked(true);