5-时间、日期与组合框

时间、日期与组合框

  • 1 日期时间
    • 1.1 日期时间相关的类
    • 1.2 日期、时间和字符串的转换
    • 1.3 例子
  • 2、组合框
    • 2.1 QComboBox
    • 2.2 QPlainTextEdit
    • 2.3 案例
  • 3、自定义右键菜单

1 日期时间

1.1 日期时间相关的类

  • QTime
    • 时间数据类型,仅表示时间,如:15:23:20
  • QDate类
    • 日期数据类型,仅表示日期,如:2025-05-25
  • QDateTime
    • 日期时间数据类型,表示日期和时间,如:2025-05-25 15:23:20

1.2 日期、时间和字符串的转换

  • 日期时间类型转换成字符串
    • QString toString(const QString &format)const
  • 字符串转换成日期时间
    • QTimeQTime::fromString(const QString &string,const QString &format)
    • QDate QDate::fromString(const QString &string,const QString &format)
    • QDateTime QDateTime::fromString(const QString &string,const QString &format)
  • 转换的日期格式和时间格式
格式符号含义
d
dd
没有前导零的日期(131)<br>有前导零的日期(0131)
ddd
dddd
本地日期名缩写(如:MonSun)<br>本地日期名(如:MondaySunday)
M
MM
没有前导零的月份(112)<br>有前导零的月份(0112)
MMM
MMMM
本地月份名称缩写(如:JanDec)<br>本地月份名称(如:JanuaryDecember)
yy
yyyy
两位数字的年份(00~99)
四位数字的年份
h
hh
H
HH
没有前导零的小时(0to23or1to12ifAM/PM display)
有前导零的小时(00to23or01to12ifAM/PM display)
没有前导零的小时(Oto23,even with AM/PM display)
有前导零的小时(0to23,even with AM/PM display)
m
mm
没有前导零的分钟(059)<br>有前导零的分钟(0059)
s
ss
没有前导零的秒(059)<br>有前导零的秒(0059)
Z
ZZZ
没有尾随零的毫秒(0999)<br>有尾随零的毫秒(000999)
AP or A
ap or a
显示AM/PM(大写)
显示am/pm(小写)

1.3 例子

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    // 序列化
    QDateTime dateTime= QDateTime::currentDateTime();
    QString str = dateTime.toString("yyyy:MM:dd h:m:s");
    qDebug()<<str;
    // 反序列化
    // date() - 解析得到日期
    // time() - 解析得到时间
    str = "2024.05.25 10:05:30";
    dateTime = QDateTime::fromString(str,"yyyy.MM.dd HH:mm:ss");
     qDebug()<<dateTime.date().year();
     qDebug()<<dateTime.date().month();
     qDebug()<<dateTime.date().day();
     qDebug()<<dateTime.time().hour();
     qDebug()<<dateTime.time().minute();
     qDebug()<<dateTime.time().second();
    return a.exec();
}

2、组合框

2.1 QComboBox

  • 下拉列表框控件类
  • 提供一个下拉列表共用户选择,也可以直接当作一个QLineEdit用作输入,每个项(item,或称列表项)可以关联一个QVariant类型的变量,用于存储一些不可见数据。
  • 常用函数
void addItem(const QString &text,const QVariant &userData = QVariant())
void addItem(const QIcon &icon,const QString &text,const QVariant &userData = QVariant())
  • 访问
int currentIndex():返回当前项的序号,从0开始
QString currentText():返回当前项的文字
QVariant currentData(int role=Qt::UserRole):返回当前项的关联数据
QString itemText(int index):返回指定索引号的项的文字
QVariant itemData(int index,int role=Qt::UserRole):返回指定索引号的项的关联数据
int count():返回项的个数
  • 信号
void currentIndexChanged(int index)
void currentIndexChanged(const QString &text)

2.2 QPlainTextEdit

  • 编辑多行文本的编辑框,可以编辑普通文本
  • QPlainTextEdit提供cut()、copy()、paste()、undo()、redo()、clear()、selectAll()等标准功能的槽函数,QPlainTextEdit还提供一个标准的右键快捷菜单
  • QPlainTextEdit常用函数
QPlainTextEdit::appendPlainText(const QString &text)// 添加项字符串
QString QPlainTextEdit::toPlainText() const // 读取所有文字
/* 逐行读取需要使用QTextDocument */
QTextDocument *QPlainTextEdit::document() const
int QTextDocument ::blockCount()
QTextBlock QTextDocument::findBlockByNumber(int blockNumber)

2.3 案例

实现下面的功能
在这里插入图片描述

1:构建ui
在这里插入图片描述

2:实现的功能

/* 简单组合框 */
// 初始化
void ComboboxDialog::on_m_btnInit_clicked()
{
    ui->m_comboSimple->addItem("无图标选项");
    ui->m_comboSimple->addItem(QIcon(":/images/aim.ico"),"有图标的选项");
}
// 清空
void ComboboxDialog::on_m_btnClear_clicked()
{
    ui->m_comboSimple->clear();//将组合框清空
}
// 可编辑
void ComboboxDialog::on_m_checkEditable_clicked(bool checked)
{
    ui->m_comboSimple->setEnabled(checked);
}
// combox
void ComboboxDialog::on_m_comboSimple_currentIndexChanged(const QString &arg1)
{
    if(!arg1.isEmpty()){
        ui->m_plainTextEdit->appendPlainText(arg1);
    }
}
/* 用户数据组合框 */
// 添加
void ComboboxDialog::on_m_btnAdd_clicked()
{
    QMap<QString,int>cityZone;
    cityZone["北京"]=10;
    cityZone["上海"]=11;
    cityZone["南京"]=13;
    for (QMap<QString,int>::iterator it=cityZone.begin();it!=cityZone.end();it++) {
        ui->m_comboUserData->addItem(it.key(),it.value());
    }
}
// combox
void ComboboxDialog::on_m_comboUserData_currentIndexChanged(const QString &arg1)
{
    if(!arg1.isEmpty()){
        QVariant zone = ui->m_comboUserData->currentData();
        ui->m_plainTextEdit->appendPlainText(arg1+"的区号是:"+zone.toString());
    }
}
/* 编辑组合框 */
 
// 追加
void ComboboxDialog::on_m_btnAppend_clicked()
{
    // 获取当前文本对象信息
    // 后序可以从该对象指针中获取文本对应的属性
    QTextDocument* qc = ui->m_plainTextEdit->document();
    int blockCount= qc->blockCount();
    for(int i=0;i<blockCount;i++){
        // 获取第i行的文本块
        ui->m_comboSimple->addItem(qc->findBlockByNumber(i).text());
    }
}
// 擦除
void ComboboxDialog::on_m_btnErase_clicked()
{
    ui->m_plainTextEdit->clear();
}
// 只读
void ComboboxDialog::on_m_checkReadOnly_clicked(bool checked)
{
    ui->m_plainTextEdit->setReadOnly(checked);
}

3、自定义右键菜单

  • contextMenuPolicy属性
    • Qt::DefaultContextMenu
    • Qt::CustomContextMenu
  • 信号
    • void customContextMenuRequested(const QPoint &pos)
  • 添加自定义右键菜单的步骤
    • contextMenuPolicy :Qt::CustomContextMenu
    • 处理信号customContextMenuRequested(const QPoint &pos)
    • 在槽函数中:
      1> 创建菜单:QMenu* menu = new QMunu;
      2> 添加菜单项:void addAction(QAction* action)
      3> 显示菜单:QAction* exec(const QPoint &p)
// 右键菜单
void ContexMenuDialog::on_ContexMenuDialog_customContextMenuRequested(const QPoint &pos)
{
    Q_UNUSED(pos);
    // 创建菜单
    QMenu* menu = new QMenu;
    // 添加菜单项
    menu->addAction(ui->m_actAbout);
    menu->addSeparator();// 添加分隔符
    menu->addAction(ui->m_actExit);
    // 显示菜单
    menu->exec(QCursor::pos());
    delete menu;// 自己new出来的对象,需要释放掉
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/657387.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nano机器人2:机械臂的视觉抓取

前言 参考链接: 【机械臂入门教程】机械臂视觉抓取从理论到实战 GRCNN 通过神经网络&#xff0c;先进行模型训练&#xff0c;在进行模型评估。 机械臂逆运动学求解 所有串联型6自由度机械臂均是可解的&#xff0c;但这种解通常只能通过数值解法得到&#xff0c;计算难度大&am…

Python | Leetcode Python题解之第118题杨辉三角

题目&#xff1a; 题解&#xff1a; class Solution:def generate(self, numRows: int) -> List[List[int]]:ret list()for i in range(numRows):row list()for j in range(0, i 1):if j 0 or j i:row.append(1)else:row.append(ret[i - 1][j] ret[i - 1][j - 1])ret…

如何批量提取pdf文件名?批量提取文件夹里的文件名,只要用对方法!

在数字化时代&#xff0c;PDF文件已经成为我们日常工作中不可或缺的一部分。然而&#xff0c;随着PDF文件数量的不断增加&#xff0c;如何高效地管理这些文件成为了一个挑战。批量提取PDF文件名&#xff0c;就是解决这一问题的关键所在。本文将为你介绍几种实用的方法&#xff…

【Game】Powerful

文章目录 【小伙伴】隐藏小伙伴 【百趣集】【人物属性点】【宠物打造】【奇遇】【钓鱼】 【小伙伴】 刷新位置 小伙伴等级详情 克制关系 隐藏小伙伴 1、仙缘小伙伴&#xff08;6种&#xff09; 遇到仙缘驭宠师然后进入战斗抓取 107、七彩仙凤 108、小青兔 109、小布 110、黑腹蛛…

基于jeecgboot-vue3的Flowable增加表单功能(二)

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 接上一节 6、增加一个types.ts 类型 export interface FormForm {id: number | string | undefined;formName: string;formContent?: string;remark: string; } 7、api增加一个getForm…

【Java】【python】leetcode刷题记录--双指针

双指针也一般称为快慢指针&#xff0c;主要用于处理链表和数组等线性数据结构。这种技巧主要涉及到两个指针&#xff0c;一个快指针&#xff08;通常每次移动两步&#xff09;和一个慢指针&#xff08;通常每次移动一步&#xff09;。快指针可以起到’探路‘的作用&#xff0c;…

【Mybatis】映射文件中获取参数的符号#{}和${}的区别

在xml映射文件中获取参数的符号都是用的#{}的方式&#xff0c;其实Mybatis还支持另一种符号来接收传递过来的参数值&#xff0c;就是${}&#xff0c;他们是区别就在与底层使用jdbc的statement不一样 #{}对应的是PreparedStatementd对象来执行sql语句 ${}对应的是Statement对象…

C语言-01_HelloWord

文章目录 1.C程序运行机制2.HelloWorld的剖析① main()② 函数体③ printf()④ 标准库、头文件 3.输出3.1 printf()标准格式3.2 占位符3.3 输出格式 1.C程序运行机制 过程1&#xff1a;编辑 编写C语言源程序代码&#xff0c;并已文件的形式存储到磁盘中。源程序文件以“.c”作…

100个 Unity小游戏系列五 -Unity 抽奖游戏专题三老虎机游戏

一、演示效果 二、知识点讲解 2.1 布局 public void CreateItems(SlotsData[] slotsData){isInited false;slotsPrizeList new List<SlotsData>();for (int i 0; i < slotsData.Length; i){var item slotsData[i];slotsPrizeList.Add(item);}float bottomY -it…

AI赋能数字人:打造与语音节奏完美匹配的高质量手势动画

在数字化时代,人机交互正以前所未有的速度进化,而AI数字人的发展正是这一进程中的重要里程碑。近期,一项旨在根据语音内容自动生成匹配手势的技术方案引起了广泛关注,该技术不仅增强了数字人的表现力,也为远程沟通、教育、娱乐等多个领域带来了革新性的应用潜力。本文将深…

手机版AI写作软件哪个好用?5款AI写作软件分享

在这个快节凑的时代&#xff0c;人们对于高效、便捷的创作方式很是追求。尤其是在人工智能技术发展迅速的今天&#xff0c;AI写作软件的出现&#xff0c;让很多自媒体创作者都会想到在手机上面进内容创作&#xff0c;这样不仅能提高工作效率&#xff0c;而且工作的自由度会更高…

APM2.8如何做加速度校准

加速度的校准建议准备一个六面平整&#xff0c;边角整齐的方形硬纸盒或者塑料盒&#xff0c;如下图所示&#xff0c;我们将以它作为APM校准时的水平垂直姿态参考&#xff0c;另外当然还需要一块水平的桌面或者地面 首先用双面泡沫胶或者螺丝将APM主板正面向上固定于方形盒子上&…

农产品产品防伪防窜货+二维码防伪+溯源系统源码全平台一物一码数字化防伪防窜货和溯源查询系统

农产品产品防伪防防窜货二维码防伪溯源系统源码全平台一物一码数字化防伪防窜货和溯源查询系统 产品防伪防防窜货二维码防伪溯源系统源码&#xff0c;该系统采用最简单易用的phpMySQL进行搭建&#xff0c;拥有完善的网站前后台&#xff0c;通过对每件产品生产线上的单品、二级…

【数据结构与算法 经典例题】返回单链表的倒数第 k 个节点

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;数据结构与算法刷题系列&#xff08;C语言&#xff09; 期待您的关注 目录 一、问题描述 二、解题思路 方法一:计数器方式 方法…

leetCode.84. 柱状图中最大的矩形

leetCode.84. 柱状图中最大的矩形 题目思路 代码 class Solution { public:int largestRectangleArea( vector<int>& h ) {int n h.size();vector<int> left( n ), right( n );stack<int> st;// 求每个矩形的第一个小于左边界的矩形 - 用单调栈for ( …

Java基础:面向对象(二)

Java基础&#xff1a;面向对象&#xff08;二&#xff09; 文章目录 Java基础&#xff1a;面向对象&#xff08;二&#xff09;1. 面向对象编程思想2. 类与对象2.1 类2.1.1 类的定义2.1.2 成员变量2.1.3 局部变量 2.2 对象2.2.1 对象的定义2.2.2 对象的使用2.2.3 对象创建的原理…

gmssl vs2010编译

1、虚拟机win10 x64&#xff0c;离线安装vs2010和2010sp1补丁&#xff1b; 2、安装ActivePerl_v5.28.1.0000和nasm-2.16.03-installer-x64均是默认完整安装&#xff1b; nasm官网下载&#xff1a; Index of /pub/nasm/releasebuilds/2.16.03/win64https://www.nasm.us/pub/nas…

JavaScript基础(十)

上一篇学了各种数组方法&#xff0c;正好先做个练习回忆一下: 排序并去重 我随便写一组数&#xff0c;要求排好并去掉重复的: var arr [2,8,1,7,2,6,1,5,2,7,6,5]; for (var i0; i<arr.length; i){ for (var ji1; j<arr.length; j){ if(arr[i]arr[j]){ arr.splice(j,1)…

七个很酷的GenAI LLM技术性面试问题

不同于互联网上随处可见的传统问题库&#xff0c;这些问题需要跳出常规思维。 大语言模型(LLM)在数据科学、生成式人工智能(GenAI)和人工智能领域越来越重要。这些复杂的算法提升了人类的技能&#xff0c;并在诸多行业中推动了效率和创新性的提升&#xff0c;成为企业保持竞争…

PHP:phpmyadmin 将查询数据导出csv

1、输入你的SQL查询出结果 2、查出数据以后拖到最下方【导出】 3、导出CSV