QT学 控件(四)步长调节框(QSpinBox + QDateTimeEdit)

文章目录

QSpinBox

允许用户通过单击向上/向下按钮或按键盘上的上/下来选择一个值来增加/减少当前显示的值。用户还可以手动键入值
常用于处理 选择 : 【1-99】 【星期1一 - 星期天】【1月-12月】

样式:
在这里插入图片描述

继承自:
QAbstractSpinBox


设置数据范围:

spin->setMaximum(7);
spin->setMinimum(1);
//spin->setRange();

设置数据循环:即超过了最大值或者低于最小值则循环到另一边

spin->setWrapping(true);

设置步长:

//设置步长
spin->setSingleStep(5);

设置前缀与后缀

spin->setPrefix("周");
spin->setSuffix("天");

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

设置特殊文本:当最小值得时候

 //最小值特殊文本
spin->setSpecialValueText("到底了");

设置数字数据得显示格式: 几进制??

//指定显示格式
spin->setDisplayIntegerBase(16);	//十六进制

扩展: 用于浮点型小数的调节 : QDoubleSpinBox


如何自定义文本呢?
1:星期一。2:星期二 。。。。 7:星期天

答案: 重写虚函数:

[virtual protected] QString QSpinBox::textFromValue(int value) const

textFromValue:接受一个值,可以转换为你想要表示的相对应的QString,例如:星期的转换:

SpinBox重写QSpinBox的textFromValue的方法,注意下面创建对象的时候需要使用我们继承的这个新类:SpinBox,textFromValue接受值,然后在列表中寻找对应的值,返回转换后的QStirng

class SpinBox:public QSpinBox
{
public:
    SpinBox(QWidget* parent=nullptr)
        :QSpinBox(parent)
    {
        strs<<"一"<<"二"<<"三"<<"四"<<"五"<<"六"<<"日";
    }
    QString textFromValue(int value)const override
    {
        //转换文本: 天数转换为大写
        return strs[(value-1)%7];
    }
private:
    QStringList strs;	//存储转换的文本
};

实例:
在这里插入图片描述


QDateTimeEdit

作用:

  1. 编辑日期和时间的单行文本框
  2. 既可以用箭头调节, 也可以用键盘编辑输入
  3. 可以单独调节某个部分

样例:
在这里插入图片描述

我们可以自己输入信息,当然也可以进行键盘的调节。

继承自:QAbstractSpinBox


构造函数:

可以只创建Date:日期,也可以之创建Time:时间,也可以DateTime都创建,像上图一样。

QDateTimeEdit(parent: QWidget = None)
QDateTimeEdit(Union[QDateTime, datetime.datetime], parent: QWidget = None)
QDateTimeEdit(Union[QDate, datetime.date], parent: QWidget = None)
QDateTimeEdit(Union[QTime, datetime.time], parent: QWidget = None)

设置显示格式:

//设置显示格式
date->setDisplayFormat("yyyy年MM月dd日 hh::mm::ss");

Section控制

 //Section控制
 //选择控制 《天》
date->setCurrentSection(QDateTimeEdit::Section::DaySection);
//打印出当前控制的块的数量,当前的块的信息,文本等
qInfo()<<date->sectionCount()<<date->currentSection()<<date->sectionText(QDateTimeEdit::Section::YearSection);

//API
sectionCount() -> int
	获取section个数
setCurrentSectionIndex(int)
	设置当前的section索引
currentSectionIndex() -> int
	获取section索引
setCurrentSection(QDateTimeEdit.Section)
	设置当前操作的日期时间section
currentSection() -> QDateTimeEdit.Section
	获取当前的section部分
sectionAt(index_int) -> QDateTimeEdit.Section
	获取指定索引位置的section
sectionText(QDateTimeEdit.Section) -> str
	获取指定section的文本内容

设置最小和最大的日期时间等

setMaximumDateTime(QDateTime)
	默认
		9999123123:59:59 999毫秒
maximumDateTime() -> QDateTime
clearMaximumDateTime()
setMinimumDateTime(QDateTime)
minimumDateTime() -> QDateTime
clearMinimumDateTime()

显示日历:

 //显示日历
date->setCalendarPopup(true);

在这里插入图片描述

信号:

时间日期等改变时触发:

dateTimeChanged(QDateTime datetime)
dateChanged(QDate date)
timeChanged(QTime time)

相关子类:
QDateEdit
QTimeEdit
QDateTime
QDate
QTime

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuleo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值