欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > QT:控件属性及常用控件(2)-----按钮类控件及显示类控件

QT:控件属性及常用控件(2)-----按钮类控件及显示类控件

2025/1/8 0:41:45 来源:https://blog.csdn.net/qq_57425280/article/details/144890558  浏览:    关键词:QT:控件属性及常用控件(2)-----按钮类控件及显示类控件

在这里插入图片描述

文章目录

  • QT关于qrc一个蛋疼的问题
  • 一、按钮类控件
    • 1.PushButton
      • 1.1 给按钮加图标
      • 1.2 给按钮加快捷键
    • 2.RadioButtion
      • 2.1 单选题
      • 2.2 关于状态
      • 2.3 多组单选
    • 3.Check Box
    • 4.Tool Button
  • 二、显示类控件
    • 1.Lable
      • 1.1 文本、图片显示
      • 1.2 Label格式
      • 1.3 设置伙伴(绑定伙伴关系)
    • 2.LCDNumber
      • 2.1 使用槽函数连接的方法实现倒计时
      • 2.2 ※※重要 使用线程的方法实现倒计时(不可行)
    • 3.ProgressBar
    • 4.Calendar Widget
  • 总结


QT关于qrc一个蛋疼的问题

在这里插入图片描述

一、按钮类控件

1.PushButton

使⽤QPushButton 表⽰⼀个按钮.这也是当前我们最熟悉的⼀个控件了.
QPushButton 继承⾃QAbstractButton 。这个类是⼀个抽象类.是其他按钮的⽗类.
QAbstractButton 中,和QPushButton 相关性较⼤的属性。

属性说明
text按钮中的⽂本
icon按钮中的图标
iconSize按钮中图标的尺⼨
shortCut按钮对应的快捷键
autoRepeat按钮是否会重复触发.当⿏标左键按住不放时,如果设为true,则会持续产⽣⿏标点击事件;如果设为false,则必须释放⿏标,再次按下⿏标时才能产⽣点击事件.(相当于游戏⼿柄上的"连发"效果)
autoRepeatDelay重复触发的延时时间.按住按钮多久之后,开始重复触发.
autoRepeatInterval重复触发的周期.

1.1 给按钮加图标

在这里插入图片描述

1.2 给按钮加快捷键

先利用qrc设置好图片

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置按钮的图标ui->pushButton_target->setIcon(QIcon(":image/kun.png"));ui->pushButton_target->setIconSize(QSize(200,200));ui->pushButton_up->setIcon(QIcon(":image/up.png"));ui->pushButton_up->setIconSize(QSize(80,80));ui->pushButton_down->setIcon(QIcon(":image/down.png"));ui->pushButton_down->setIconSize(QSize(80,80));ui->pushButton_right->setIcon(QIcon(":image/right.png"));ui->pushButton_right->setIconSize(QSize(80,80));ui->pushButton_left->setIcon(QIcon(":image/left.png"));ui->pushButton_left->setIconSize(QSize(80,80));//设置快捷键方法1,容易写错//ui->pushButton_up->setShortcut(QKeySequence("w"));            //QKeySequence("ctrl+w")//ui->pushButton_down->setShortcut(QKeySequence("s"));//ui->pushButton_left->setShortcut(QKeySequence("a"));//ui->pushButton_right->setShortcut(QKeySequence("d"));//设置快捷键方法2,不容易写错ui->pushButton_up->setShortcut(QKeySequence(Qt::Key_Up));        //QKeySequence(Qt::CTRL+Qt::Key_Up));ui->pushButton_down->setShortcut(QKeySequence(Qt::Key_Down));ui->pushButton_left->setShortcut(QKeySequence(Qt::Key_Left));ui->pushButton_right->setShortcut(QKeySequence(Qt::Key_Right));//开启鼠标连发功能(键盘的连发默认是支持的)ui->pushButton_up->setAutoRepeat(true);ui->pushButton_down->setAutoRepeat(true);ui->pushButton_left->setAutoRepeat(true);ui->pushButton_right->setAutoRepeat(true);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_up_clicked()
{//获取target的位置QRect rect=ui->pushButton_target->geometry();//点击时设置新的位置ui->pushButton_target->setGeometry(rect.x(),rect.y()-5,rect.width(),rect.height());
}void Widget::on_pushButton_left_clicked()
{//获取target的位置QRect rect=ui->pushButton_target->geometry();//点击时设置新的位置ui->pushButton_target->setGeometry(rect.x()-5,rect.y(),rect.width(),rect.height());
}void Widget::on_pushButton_right_clicked()
{//获取target的位置QRect rect=ui->pushButton_target->geometry();//点击时设置新的位置ui->pushButton_target->setGeometry(rect.x()+5,rect.y(),rect.width(),rect.height());
}void Widget::on_pushButton_down_clicked()
{//获取target的位置QRect rect=ui->pushButton_target->geometry();//点击时设置新的位置ui->pushButton_target->setGeometry(rect.x(),rect.y()+5,rect.width(),rect.height());
}

在这里插入图片描述

2.RadioButtion

QRadioButton 是单选按钮.可以让我们在多个选项中选择⼀个.
作为QAbstractButton 和QWidget 的⼦类,上⾯介绍的属性和⽤法,对于QRadioButton同样适⽤.
QAbstractButton 中和QRadioButton 关系较⼤的属性

属性说明
checkable是否能选中
checked是否已经被选中.checkable是checked的前提条件.
autoExclusive是否排他.选中⼀个按钮之后是否会取消其他按钮的选中.对于QRadioButton 来说默认就是排他的.

2.1 单选题

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//添加默认选项//ui->radioButton_1->setChecked(true);//ui->label->setText("你最喜欢的食物:水果");//禁用选项(屎不能吃)//ui->radioButton_5->setCheckable(false);//只是能让按钮不被选中,但是点击可以响应!ui->radioButton_5->setEnabled(false);//ui->radioButton_5->setDisabled(true);
}Widget::~Widget()
{delete ui;
}void Widget::on_radioButton_1_clicked()
{//点击后更新内容ui->label->setText("你最喜欢的食物:水果");
}void Widget::on_radioButton_2_clicked()
{//点击后更新内容ui->label->setText("你最喜欢的食物:蔬菜");
}void Widget::on_radioButton_3_clicked()
{//点击后更新内容ui->label->setText("你最喜欢的食物:肉类");
}void Widget::on_radioButton_4_clicked()
{//点击后更新内容ui->label->setText("你最喜欢的食物:海鲜");
}void Widget::on_radioButton_5_clicked()
{//点击后更新内容ui->label->setText("你最喜欢的食物:屎");
}

在这里插入图片描述

2.2 关于状态

在这里插入图片描述

• clicked 是⼀次⿏标按下+⿏标释放触发的.
• pressed 是⿏标按下触发的.
• released 是⿏标释放触发的.
• toggled 是checked属性改变时触发的.(连续点击不会触发,必须切换才能触发)

2.3 多组单选

在这里插入图片描述

3.Check Box

QCheckBox 表⽰复选按钮.可以允许选中多个.(其他功能和radiobutton差不多!!)
和QCheckBox 最相关的属性也是checkable和checked,都继承自QAbstractButton.
⾄于checkable 和checked ,都是继承⾃QCheckBox 独有的属性tristate ⽤来实现"三态复选框".
在这里插入图片描述

4.Tool Button

QToolButton 的⼤部分功能,和QPushButton 是⼀致的.但是QToolButton 主要应⽤在⼯具栏,菜单等场景.
在这里插入图片描述

二、显示类控件

1.Lable

QLabel 可以⽤来显⽰⽂本和图⽚.

属性说明
textQLabel 中的⽂本
textFormat⽂本的格式.
pixmapQLabel内部包含的图⽚.
scaledContents设为true表⽰内容⾃动拉伸填充QLabel 。设为false则不会⾃动拉伸
alignment对⻬⽅式.
wordWrap设为true内部的⽂本会⾃动换⾏.设为false则内部⽂本不会⾃动换⾏.
indent设置⽂本缩进.⽔平和垂直⽅向都⽣效.
margin内部⽂本和边框之间的边距.不同于于indent,但是是上下左右四个⽅向都同时有效.⽽indent最多只是两个⽅向有效(具体哪两个⽅向有效取决于alignment).
openExternalLinks是否允许打开⼀个外部的链接.
buddy给QLabel关联⼀个"伙伴",这样点击QLabel时就能激活对应的伙伴.

1.1 文本、图片显示

纯文本、富文本、markdown文本显示:

在这里插入图片描述

图片显示:

收先第一步还是引入qrc文件

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//获取窗口尺寸QRect windowRect = this->geometry();ui->label->setGeometry(0,0,windowRect.width(),windowRect.height());//设置图标QPixmap pixmap(":/kun.png");ui->label->setPixmap(pixmap);//自动拉伸ui->label->setScaledContents(true);}Widget::~Widget()
{delete ui;
}//不断获取窗口信息
void Widget::resizeEvent(QResizeEvent *event)
{qDebug() << event->size();ui->label->setGeometry(0,0,event->size().width(),event->size().height());
}

*对于resizeEvent(QResizeEvent event):

此处的resizeEvent 函数我们没有⼿动调⽤,但是能在窗⼝⼤⼩变化时被⾃动调⽤.

这个过程就是依赖C++中的多态来实现的.Qt框架内部管理着QWidget对象表⽰窗⼝.在窗⼝⼤⼩发⽣改变时,Qt就会⾃动调⽤resizeEvent函数.

但是由于实际上这个表⽰窗⼝的并⾮是QWidget,⽽是QWidget的⼦类,也就是我们⾃⼰写的Widget.此时虽然是通过⽗类调⽤函数,但是实际上执⾏的是⼦类的函数(也就是我们重写后的resizeEvent).

此处属于是多态机制的⼀种经典⽤法.通过上述过程,就可以把⾃定义的代码,插⼊到框架内部执⾏.相当于"注册回调函数".

在这里插入图片描述

1.2 Label格式

  ui->setupUi(this);//设置对其格式ui->label->setText("对其格式教学!");ui->label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);//水平对齐和数值对其,当然还要其他各种对齐方式//设置自动换行ui->label_2->setText("这是自动换行教学!!这是自动换行教学!!这是自动换行教学!!奥奥这是自动换行教学!!");ui->label_2->setWordWrap(true);//设置缩进ui->label_3->setText("这是缩进教学");ui->label_3->setIndent(50);//缩进50像素(并不是首行缩进,换行了后续的行也会缩进)//设置边距ui->label_4->setText("这是设置边距的教学");ui->label_4->setMargin(10);//四个方向都有的边距(上下左右)

在这里插入图片描述

1.3 设置伙伴(绑定伙伴关系)

QT中把label中的⽂本设置为"快捷键&A"这样的形式.
其中&后⾯跟着的字符,就是快捷键.
可以通过alt+A的⽅式来触发该快捷键.
绑定伙伴关系之后,就可以通过快捷键来选择!!
在这里插入图片描述

2.LCDNumber

QLCDNumer 是⼀个专⻔⽤来显⽰数字的控件.类似于"⽼式计算器"的效果.

属性说明
intValueQLCDNumber显⽰的数字值(int).
valueQLCDNumber显⽰的数字值(double).和intValue是联动的.例如给value设为1.5,intValue的值就是2.另外,设置value和intValue的⽅法名字为display,⽽不是setValue或者setIntValue
digitCount显⽰⼏位数字.
mode数字显⽰形式(二进制、十六进制、八进制等等)
segmentStyle设置显⽰⻛格(平面风格、轮廓风格、填充显示风格等等).
smallDecimalPoint设置⽐较⼩的⼩数点.

2.1 使用槽函数连接的方法实现倒计时

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置初始值ui->lcdNumber->display(50);//创建一个QTimer实例timer = new QTimer(this);//把QTimer的timeout信号和槽函数进行连接connect(timer,&QTimer::timeout,this,&Widget::handle);//启动定时器,参数是触发周期,单位是mstimer->start(1000);}Widget::~Widget()
{delete ui;
}void Widget::handle()
{//拿到LCDNumber的数字int value = ui->lcdNumber->intValue();if(value <= 0){//数字到0停止timer->stop();return;}ui->lcdNumber->display(value-1);
}

QTimer 表⽰定时器.通过start⽅法启动定时器之后,就会每隔⼀定周期,触发⼀次QTimer::timeout 信号.
使⽤connect 把QTimer::timeout 信号和次触发Widget::updateTime连接起来,意味着每QTimer::timeout 都会执⾏Widget::updateTime
在这里插入图片描述

2.2 ※※重要 使用线程的方法实现倒计时(不可行)

在这里插入图片描述

3.ProgressBar

使⽤QProgressBar 表⽰⼀个进度条.

属性说明
minimum进度条最⼩值
maximum进度条最⼤值
value进度条当前值
alignment⽂本在进度条中的对⻬⽅式(左对齐,右对齐,居中对齐,两端对齐等)
textVisible进度条的数字是否可⻅…
orientation进度条的⽅向是⽔平还是垂直.
invertAppearance是否是朝反⽅向增⻓进度.
textDirection⽂本的朝向.
format展⽰的数字格式(%p百分比,%v数值,%m剩余时间,%t总时间).

书写进度条

每过100ms,进度条数值+1.
在这里插入图片描述
在这里插入图片描述

4.Calendar Widget

QCalendarWidget 表⽰⼀个"⽇历"

属性说明
selectDate当前选中的⽇期
minimumDate最⼩⽇期
maximumDate最⼤⽇期
firstDayOfWeek每周的第⼀天(也就是⽇历的第⼀列)是周⼏.
gridVisible是否显⽰表格的边框
selectionMode是否允许选择⽇期
navigationBarVisible⽇历上⽅标题是否显⽰
horizontalHeaderFormat⽇历上⽅标题显⽰的⽇期格式
verticalHeaderFormat⽇历第⼀列显⽰的内容格式
dateEditEnabled是否允许⽇期被编辑
信号说明
selectionChanged(constQDate&)当选中的⽇期发⽣改变时发出
activated(const QDate&)当双击⼀个有效的⽇期或者按下回⻋键时发出,形参是⼀个QDate类型,保存了选中的⽇期
currentPageChanged(int, int)当年份⽉份改变时发出,形参表⽰改变后的新年份和⽉份

用法也非常简单,这里转为槽函数用的是selectionChanged,它的作用是当用户改变日历的选中日期时触发。

在这里插入图片描述

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com