首页 > 其他分享 >【QT】常用控件(二)

【QT】常用控件(二)

时间:2024-10-17 14:52:40浏览次数:3  
标签:控件 常用 QT pushButton Widget label ui 设置 Qt

在这里插入图片描述
个人主页~

常用控件(一)~


常用控件

三、按钮类控件

1、Push Button

QPushButton继承自QAbstractButton,它是所有按钮的父类

我们从这个按钮的属性表中可以看到,QPushButton的父类是QAbstractButton,上面是QAbstractButton的父类QWidget,再向上就是QWidget的父类QObject

在这里插入图片描述
其中在QAbstractButton中,与QPushButton相关性较大的属性有这些:
text:按钮文本
icon:按钮图标
iconSize:按钮图标尺寸
shortCut:按钮快捷键
autoRepeat:按钮重复触发设置
autoRepeatDelay:重复触发的延时时间
autoRepeatInterval:重复触发的周期

下面我们来展示使用一下以上提到的这些属性

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_left_clicked();

    void on_pushButton_up_clicked();

    void on_pushButton_down_clicked();

    void on_pushButton_right_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->pushButton_target->setIcon(QIcon(":/slm.jpg"));
    ui->pushButton_target->setIconSize(QSize(200,200));

    ui->pushButton_up->setIcon(QIcon(":/up.png"));
    ui->pushButton_up->setIconSize(QSize(100,100));
    ui->pushButton_down->setIcon(QIcon(":/down.png"));
    ui->pushButton_down->setIconSize(QSize(100,100));
    ui->pushButton_left->setIcon(QIcon(":/left.png"));
    ui->pushButton_left->setIconSize(QSize(100,100));
    ui->pushButton_right->setIcon(QIcon(":/right.png"));
    ui->pushButton_right->setIconSize(QSize(100,100));

    ui->pushButton_up->setShortcut(Qt::Key_W);
    ui->pushButton_down->setShortcut(Qt::Key_S);
    ui->pushButton_left->setShortcut(Qt::Key_A);
    ui->pushButton_right->setShortcut(Qt::Key_D);


}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_left_clicked()
{
    QRect r = ui->pushButton_target->geometry();

    ui->pushButton_target->setGeometry(r.x()-10,r.y(),r.width(),r.height());

    qDebug() << "left";
}

void Widget::on_pushButton_up_clicked()
{
    QRect r = ui->pushButton_target->geometry();

    ui->pushButton_target->setGeometry(r.x(),r.y() - 10,r.width(),r.height());

    qDebug() << "up";
}

void Widget::on_pushButton_down_clicked()
{
    QRect r = ui->pushButton_target->geometry();

    ui->pushButton_target->setGeometry(r.x(),r.y() + 10,r.width(),r.height());

    qDebug() << "down";
}

void Widget::on_pushButton_right_clicked()
{
    QRect r = ui->pushButton_target->geometry();

    ui->pushButton_target->setGeometry(r.x()+10,r.y(),r.width(),r.height());

    qDebug() << "right";
}

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="LztiMTIs-1728017211947" src="https://live.csdn.net/v/embed/427982"></iframe>

pushbutton

观察视频我们可以发现,当我使用键盘快捷键按住时,会发生连点,而我用鼠标按住不会发生连点,这都是生成的默认值,我们可以通过下面的函数来打开鼠标连点模式

setAutoRepeat(true);

通过下面函数设置两次连点之间的最小时间

SetAutoRepeatDelay(1000);

我们知道有些游戏的挂是有连点器的,我们可以通过下面的函数来设置一个连点器,它是每经过特定的时间就会触发一次点击

setAutoRepeatInterval(500);

2、Radio Button

RadioButton就是单选选项,可以让我们在多个选项中选择一个,和QAbstractButton相关的属性:

checkable:能否被选中
checked:是否被选中
autoExclusive:是否选择后会取消其他按钮的选中,对于RadioButton默认为是

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="vVJcHfMI-1728226049835" src="https://live.csdn.net/v/embed/428082"></iframe>

RadioButton

如果想要设置默认值,只需要在构造函数中先设置好初始值就行

但是这样的一个问题就是,如果我在界面上设置了十个RadioButton,但是这十个RadioButton对应的是五个判断题,那我们应该分五组,每组有一个被选择,此时我们就要用到qbuttongroup来进行分组

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="8sUc78aZ-1728226055987" src="https://live.csdn.net/v/embed/428083"></iframe>

RadioButton_2

3、Check Box

qcheckbox是复选按钮,可以选中多个选项

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="pwByAqqE-1728227142412" src="https://live.csdn.net/v/embed/428148"></iframe>

checkbox

四、显示类控件

1、label

QLabel可以用来显示文本和图片

属性说明
text设置文本
textFormat设置文本格式
pixmap设置包含的图片
scaledContents设置自动拉伸
alignment设置对齐方式
wordWrap设置自动换行
indent设置文本缩进
margin设置文本和边框之间的间距
openExternalLinks设置是否允许打开外部链接
buddy设置关联伙伴

在这里插入图片描述
第一段是普通文本,第二段是富文本,第三段是markdown文本

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="CQ1XZlzF-1728315731127" src="https://live.csdn.net/v/embed/428234"></iframe>

label

这里设置了自动拉伸但是不可充斥整个边框
在这里插入图片描述
想要充斥整个边框就需要用到C++多态的知识,对于父类的虚函数如果我们在子类中重写,将会执行子类的重写后的函数,这里的resizeEvent是一个在我们调整窗口大小的时候自动调用的函数,我们将其重写,将图片设置为充斥整个窗口

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="Jawirzuk-1728398530340" src="https://live.csdn.net/v/embed/428237"></iframe>

label_2

这里的QFrame用来设置边框的的性质,认识这个性质好让我们的下一步进行操作
在这里插入图片描述

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->label->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);//垂直水平居中
    ui->label->setText("super_little_monster");

    ui->label_2->setAlignment(Qt::AlignTop|Qt::AlignLeft);
    ui->label_2->setWordWrap(true);//自动换行
    ui->label_2->setText("这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本");
    //ui->label_2->setText("super_little_monster super_little_monster super_little_monster");

    ui->label_3->setAlignment(Qt::AlignTop|Qt::AlignLeft);
    ui->label_3->setIndent(20);//上左下有20的间距,右侧没有
    ui->label_3->setWordWrap(true);
    ui->label_3->setText("这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本");
    //ui->label_3->setText("super_little_monster super_little_monster super_little_monster");


    ui->label_4->setAlignment(Qt::AlignTop|Qt::AlignLeft);
    ui->label_4->setMargin(20);//上下左右都有20的间距
    ui->label_4->setWordWrap(true);
    ui->label_4->setText("这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本这是⼀个很⻓的⽂本");
    //ui->label_4->setText("super_little_monster super_little_monster super_little_monster");

}

Widget::~Widget()
{
    delete ui;
}

在这里插入图片描述
对于openExternalLinks,直接设置true或false

对于buddy
当我们把label的内容设置为“快捷键&”+某个按键的形式,当前label所绑定的buddy将会可以被键盘上的组合键alt+某个按键选中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里生成的就可以被组合键也是快捷键选中


今日分享就到这里了~

在这里插入图片描述

标签:控件,常用,QT,pushButton,Widget,label,ui,设置,Qt
From: https://blog.csdn.net/s_little_monster/article/details/142700648

相关文章

  • canopen 导致qt上位机崩溃的原因分析
    今天开发过程中,在qt中移植canfestival协议栈后,上位机崩溃了,经过我的排查,发现了崩溃的原因。在协议栈中的代码如下UNS32RegisterSetODentryCallBack(CO_Data*d,UNS16wIndex,UNS8bSubindex,ODCallback_tCallback){UNS32errorCode;constindextable*odentry;o......
  • 前端常用6种数据加密方式的使用(最详解)
    原文链接:https://blog.csdn.net/2401_82471222/article/details/140538952前端常用的六种数据加密方式包括Base64编码、MD5加密、SHA-1加密、SHA-256加密、AES加密和RSA加密。每种加密方式都有其特定的使用场景和优缺点。以下是这些加密方式的详细使用说明:1.Base64编码定义与特......
  • 界面控件Telerik UI for WPF 2024 Q3亮点 - 支持禁用数据过滤等
    TelerikUIforWPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UIforWPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成VisualStudio工具箱中。本文将介绍界面组件TelerikUIforWPF在今......
  • 界面控件DevExtreme中文教程 - 如何与Amazon S3和Azure Blob存储集成?
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,到ASP.NETCore或Vue,DevExtreme包含全面的高性能和响应式UI小部件集合,可在传统Web和下一代移动应用程序中......
  • Linux介绍及常用命令
    Linux系统简介1969年,AT&T公司的⻉尔实验室PMIT合作开发的Unix,í在于创建⼀个⽤于⼤型、并⾏、多⽤户的操作系统Unix的推⼴:从学校⾛进企业Unix的版本要两个:AT&TSystemV——就是俗称的系统5BerkleySoftwareDistribution(BSD)linux是一种操作系统1991......
  • QT实现滑动页面切换
    1.界面实现效果以下是具体的项目需要用到的效果展示。2.简介原理:使用Qt的QPropertyAnimation动画类,这里简单来说就是切换两个界面。这个widget里面可以放很多个待切换的界面,每次切换的时候将当前界面和切换后的界面显示,其他界面都隐藏,然后当前界面移动到主界面之外,下一......
  • Java算法竞赛之HashMap常用API--哈西表!
    在Java算法竞赛中,HashMap是一个非常重要的数据结构,它提供了许多有用的API来方便地进行键值对的存储、检索和更新。除了getOrDefault方法外,HashMap还有其他一些常用的API。以下是一些主要的HashMapAPI及其在算法竞赛中的常见用法:put(Kkey,Vvalue)作用:将指定的键与值放入H......
  • 2-STM32F103+ML307(中移4G Cat1)OTA升级篇(自建物联网平台)-STM32通过ML307使用http或
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/ML307/myota.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  说明前面......
  • Django学习-ORM_常用字段及字段选项
      字段选项: 注意:当我们新增数据的时候,如果没有新增设置了default的字段,此时会使用default设置的默认值填充到新增的数据中 ......
  • RESTful API常用的HTTP请求方法
    RESTfulAPI常用的HTTP请求方法1.GET获取资源在RESTfulAPI中,一般用来获取数据,例如列表,详情等。对应CRUD中的R,即查找操作。请求参数通常在URL中传递(如查询字符串)。2.POST用途:创建新资源。特点:可以提交数据到服务器进行处理,通常会改变服务器的状态或数据。例如提交表单信息......