【QT】常用控件(四)

个人主页~

常用控件(一)~
常用控件(二)~
常用控件(三)~


常用控件

五、输入类控件

4、SpinBox

属性 说明
value 存放的数值
singleStep 按下一次按钮变化多少
displayInteger 数字的进制设置
minimum 最小值
maximum 最大值
suffix 后缀
prefix 前缀
wrapping 是否允许换行
frame 是否带边框
alignment 文字对齐方式
readOnly 是否只读
buttonSymbol 按钮上的图标
accelerated 按下按钮是否快速调整
correctionMode 输入错误如何修正
keyboardTrack 是否开启键盘跟踪

对于buttonSymbol,有三种模式:

UpDownArrows:上下箭头形式(默认)

PlusMinus:加减号形式

NoButtons:没有按钮

对于correctionMode,有两种模式:

QAbstractSpinBox::CorrectToPreviousValue:输入无效值会将其重置为上一个输入的有效值(默认)

QAbstractSpinBox::CorrectToNearestValue:输入无效值会将其重置为最接近这个无效值的有效值

对于keyboardTrack,开启时只要输入新的数字就会触发值修改信号,关闭只有在按下enter和失去焦点的时候才能值修改触发信号

spinbox

5、Date Edit 和 Time Edit

QDateEdit 调日期

QTimeEdit 调时间

QDateTimeEdit 调日期时间,作为本条的例子

属性 说明
dateTime 时间日期的值
date 日期的值
time 时间的值
displayFormat 时间日期的格式
minimumDateTime 最小时间日期
maximumDateTime 最大时间日期
timeSpec 时间的显示格式

其中timeSpec有三种模式:

Qt::LocalTime:本地时间

Qt::UTC : 协调世界时

Qt::OffsetFromUTC :显示相对于UTC的偏移量

写一个计算两个时间之间间隔的程序

cpp 复制代码
void Widget::on_pushButton_clicked()
{
    QDateTime oldtime = ui->dateTimeEdit_old->dateTime();
    QDateTime newtime = ui->dateTimeEdit_new->dateTime();

    int days = oldtime.daysTo(newtime);//算出相差的天数
    int hours = (oldtime.secsTo(newtime) / 3600) % 24;//算出相差的小时数
    if(oldtime.time() > newtime.time())
    {
        days--;
    }
//如果旧的时间大于新的时间,减一天天数
    QString text = QString("它们之间的时间为:")+QString::number(days)+QString("天零")
            +QString::number(hours)+QString("小时");
    ui->label->setText(text);
}

6、Dial

属性 说明
value 数值
minimum 最小值
maximum 最大值
singleStep 按方向键时改变的步长
pageStep 按pageup或pagedown时改变的步长
sliderPosition 界面上旋钮显示的初始位置
tracking 外观是否会跟踪数值变化
wrapping 是否允许循环调整
notchesVisible 是否显示刻度线
notchTarget 刻度线之间的相对位置

这是一个设置窗口透明度的应用dial的程序

dial

7、Slider

属性 说明
value 数值
minimum 最小值
maximum 最大值
singleStep 按方向键时改变的步长
pageStep 按pageup或pagedown时改变的步长
sliderPosition 滑动条显示的初始位置
tracking 外观是否会跟随数值变化
orientation 滑动条的方向是水平还是垂直
invertedAppearance 是否要翻转滑动条的方向
tickPosition 刻度的位置
tickInterval 刻度的密集程度

设置按钮的尺寸大小,用拖动滑动条的方式来进行

QSlider

快捷键shortcut

这是一个关键的知识,用来设置快捷键

QShortcut

六、多元素控件

1、List Widget

属性 说明
currentRow 当前被选中的是第几行
count 一共有多少行
sortingEnabled 是否允许排序
isWrapping 是否允许换行
itemAlignment 元素的对齐方式
selectRectVisible 被选中的元素矩形是否可见
spacing 元素间的间隔

listwidget

2、Table Widget

方法 说明
item(int row, int column) 根据行数列数获取指定的QTableWidgetItem*
setItem(int row, int column,QTableWidget*) 根据行数设置表格中的元素
currentItem() 返回被选中的元素QTableWidgetItem*
currentRow() 返回被选中元素是第几行
currentColumn() 返回被选中元素是第几列
row(QTableWidgetItem* ) 获取指定的item是第几行
column(QTableWidgetItem* ) 获取指定的item是第几列
rowCount() 获取行数
columnCount() 获取列数
insertRow(int row) 在第row行插入新行
insertColumn(int column) 在第column列插入新列
removeRow(int row) 删除第row行
removeColumn(int column) 删除第column列
setHorizontalHeaderItem(int column, QTableWidget*) 设置指定列的表头
setVerticalHeaderItem(int row,QTableWidget*) 设置指定行的表头

tablewidget

3、Tree Widget

方法 说明
clear 清空所有子节点
addTopLevelItem(QTreeWidgetItem* item) 新增顶层节点
topLevelItem(int index) 获取指定下标的顶层节点
topLevelItemCount() 获取顶层节点个数
indexOfTopLevelItem(QTreeWidgetItem* item) 查询指定节点的下标
takeTopLevelItem(int index) 删除指定的顶层节点
currentItem() 获取到当前选中的节点
setCurrentItem(QTreeWidgetItem* item) 选中指定节点
setExpanded(bool) 展开或关闭节点
setHeaderLabel(const QString& text) 设置TreeWidget的header名称

对于TreeWidget来说,顶层节点是除掉头节点以外的第一层节点

QTreeWidget

七、容器类控件

1、Group Box

属性 说明
title 分组框的标题
alignment 分组框内部内容的对齐方式
flat 是否为扁平模式
checkable 是否可选择
checked 是否被选择

groupbox

2、Tab Widget

属性 说明
tabPosition 标签页所在位置
currentIndex 当前选中了第几个标签页
currentTabText 当前选中的标签页的文本
currentTabName 当前选中的标签页的名字
currentTabIcon 当前选中的标签页的图标
currentTabToolTip 当前选中的标签页的提示信息
tabsCloseable 标签页是否可以关闭
movable 标签页是否可以移动

TabWidget就是一个widget,可以在上面添加其他如label pushbutton等的控件

tablewidget

八、布局管理器

QT通过布局管理器解决一些位置的问题,因为在QT中在设置位置的时候都是绝对位置的设置,比如说setgeometry、move,或者ui界面的拖动

1、QVBoxLayout

属性 说明
layoutLeftMargin 左侧边框
layoutRightMargin 右侧边框
layoutTopMargin 上方边距
layoutBottomMargin 下方边框
layoutSpacing 相邻元素之间的间距

2、QHBoxLayout

属性 说明
layoutLeftMargin 左侧边框
layoutRightMargin 右侧边框
layoutTopMargin 上方边距
layoutBottomMargin 下方边框
layoutSpacing 相邻元素之间的间距

垂直布局和水平布局是可以相互嵌套的,通过它们的相互配合可是实现更好的效果

在实现完成后,我们拖动边框发现按钮的大小是可以通过窗口的变化来变化的,但是要是通过ui将两个垂直布局或者两个水平布局设置到一个layout里,那么就不会实现这样的效果,因为一个widget只能有一个layout

3、QGridLayout

属性 说明
layoutLeftMargin 左侧边框
layoutRightMargin 右侧边框
layoutTopMargin 上方边距
layoutBottomMargin 下方边框
layoutHorizontalSpacing 相邻水平方向元素间隔
layoutVerticalSpacing 相邻垂直方向元素
layoutRowStretch 行方向拉伸系数
layoutColumnStretch 列方向拉伸系数

可以通过所写坐标设置控件的相对位置

4、QFormLayout

可以算作是QGridLayout的一种特殊情况,左侧为提示,右侧为输入框

addRow第一个参数显示提示,如果为NULL则不显示

5、Spacer

属性 说明
width 宽度
height 高度
hData 水平方向的SizePolicy选项
vData 垂直方向的SizePolicy选项

选项有如下几种:

QSizePolicy::Ignored :忽略控件尺寸,不对布局产生影响

QSizePolicy::Minimum : 控件的最小尺寸固定,布局时不会小于该值

QSizePolicy::Maximum : 控件的最小尺寸固定,布局时不会大于该值

QSizePolicy::Preferred : 控件的理想尺寸固定,布局时往这个值靠近

QSizePolicy::Expanding :控件的尺寸可以根据空间调整,尽可能的多占据空间

QSizePolicy::Shrinking : 控件的尺寸可以根据空间调整,尽可能的少占据空间


今日分享就到这里了~

相关推荐
2601_9491465333 分钟前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
陌上丨37 分钟前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
曹牧38 分钟前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
在路上看风景42 分钟前
19. 成员初始化列表和初始化对象
c++
KYGALYX44 分钟前
服务异步通信
开发语言·后端·微服务·ruby
AI_56781 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
zmzb01031 小时前
C++课后习题训练记录Day98
开发语言·c++
执笔论英雄1 小时前
【大模型学习cuda】入们第一个例子-向量和
学习
ccecw1 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习