[Qt 基础-01] QPushButton

QPushButton

简介

QPushButton是一个很常用的一个按钮控件,主要用于创建一个可按压的按键。它显示了一 个文本和一个图标。另外,你也可以在创建时,指定一个快捷键。

基本用法

1. 创建

QPushButton主要有两种创建方法,一种是直接在QtCreator上进行拖拽添加,另外一种是用代码创建。

用代码创建如下:

QPushButton *button = new QPushButton("Download", this);

你也可以在创建的时候这样写:

QPushButton *button = new QPushButton("&Download", this);

这样,你就指定了一个快捷键,用于按下这个按钮,具体的规则为:
在"&"后面的那个字母就是你的快捷键,而且快捷键的组合方式为Alt + D。所以如果你是这样写

QPushButton *button = new QPushButton("D&ownload", this);

你的快捷键就是:Alt + o

2. 设置信息

你也可以自己手动的去设置信息,包括按钮上面的字,按钮上的图标。
调用setText来设置按钮上的文字:

button->setText("下载");

调用setIcon来设置按钮上的图标

QIcon icon("D:/icon.png");
button->setIcon(icon);

autoRepeat

属性autoRepeat,当这个属性为true的时候,你鼠标左键按下键盘之后,会持续性的释放pressedreleasedclicked信号,直到你松下鼠标左键为止;

    ui->pushButton_3->setAutoRepeat(true);
    connect(ui->pushButton_3, &QPushButton::pressed, [] () {
    
    
        qDebug() << "pressed";
    });

    connect(ui->pushButton_3, &QPushButton::clicked, [] () {
    
    
        qDebug() << "clicked";
    });

    connect(ui->pushButton_3, &QPushButton::released, [] () {
    
    
        qDebug() << "released";
    });

在按下之后,会得到如下效果:
在这里插入图片描述

autoRepeatDelay

这个属性用来设置前面的autoRepeat这个在自动重复前的延迟,也就是说在按下之后,等待这个设置的延迟之后,才会开启自动重复。

ui->pushButton_3->setAutoRepeatDelay(2000);

效果如下:
在这里插入图片描述

autoRepeatInterval

这个属性是设置每个重复信号发射之间的间隔,

ui->pushButton_3->setAutoRepeatInterval(2000);

效果如下:
在这里插入图片描述

信号的连接

主要的信号主要是鼠标点击按钮时,发射的信号,主要是click信号,你可以连接这两个信号,来实现自己的功能。

connect(button, SIGNAL(click()), this, SLOT(doSomething()));

样式表设计

我们可以设计样式表,来达到美化按钮的目的。

QPushButton
{
    
    
    background-color: rgb(111, 221, 255);
    font: 8px "Microsoft YaHei";
    color: black;
}

另外如果要设置图片背景给QPushButton,请移步Qt Qss 设置QPushButton图标和背景

同时你也可以根据按钮的伪状态来设置对应的样式表:

/*按下的状态*/
QPushButton:pressed
{
    
    
	/*要设计的样式*/
}

/*悬浮的状态*/
QPushButton:hover
{
    
    
	/*要设计的样式*/
}

最终的代码和效果如下:

QPushButton *button = new QPushButton("D&ownload", this);

QIcon icon("D:/icon.png");
button->setIcon(icon);

connect(button, SIGNAL(click()), [] () {
    
    
    QMessageBox::information(nullptr, "提示", "按钮按下");
});

button->setStyleSheet("QPushButton{\n    background-color: rgb(111, 221, 255);\n    font: 14px \"Microsoft YaHei\";\n    color: black;\n}");

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44723937/article/details/125576988