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出来的对象,需要释放掉
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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

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

第七十九节 Java面向对象设计 - Java访问级别

Java面向对象设计 - Java访问级别 类简单名称是 class 关键字和 {)之间的名称。 当我们通过简单的名称引用一个类时&#xff0c;编译器在引用类所在的同一个包中查找该类声明。 我们可以使用全名来引用一个类如下。 com.w3cschool.Dog aDog;指定类的访问级别的一般语法是 &…

Aleth-NeRF: Illumination Adaptive NeRF with Concealing Field Assumption

Abstract Aleth-NeRF: 带有隐蔽场假设的照明自适应 NeRF 照明照明标准的神经辐射场(NeRF)范例采用了一种以观察者为中心的方法,将光照和材料反射的各个方面仅仅从3D 点发射纠缠在一起。这种简化的渲染方法在准确建模在不利光照条件下捕获的图像方面提出了挑战,如弱光或过度曝…

npm install node-sass 安装失败的解决方案:利用国内镜像加速安装

在开发前端项目时&#xff0c;使用Sass作为CSS预处理器是很多开发者的选择。然而&#xff0c;在通过npm安装其Node.js绑定库node-sass时&#xff0c;一些开发者可能会遇到安装失败的问题&#xff0c;尤其是网络原因导致的下载缓慢或中断。本文将指导你如何通过更换为国内镜像源…

linux内部pthread_create函数创建设置栈大小方法

pthread_create函数是Unix/Linux下创建线程的函数&#xff0c;它的原型如下&#xff1a; int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg); 其中&#xff0c;pthread_attr_t是用来设置线程属性的&#xff0c;…

The 2022 ICPC Asia Nanjing Regional Contest - External G

题目链接:Problem - D - Codeforces 写在前面&#xff1a;今天的训练赛打的稀碎&#xff0c;一道稍微难一点的签到题就把我难住了&#xff0c;看完题解确实感觉不难&#xff0c;看来题目还是刷太少了。 回归正题 题意&#xff1a; 思路&#xff1a;尽量让分子大&#xff0c;分…

【NumPy】深入了解NumPy的multiply函数:高效矩阵和数组乘法指南

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

HNU-人工智能-作业3

人工智能-作业3 计科210X 甘晴void 202108010XXX 1.贝叶斯网络 根据图所给出的贝叶斯网络&#xff0c;其中&#xff1a;P(A)0.5&#xff0c;P(B|A)1&#xff0c; P(B|A)0.5&#xff0c; P(C|A)1&#xff0c; P(C|A)0.5&#xff0c;P(D|BC)1&#xff0c;P(D|B, C)0.5&#xff…

1. 基于时间序列分析的股票价格波动预测模型:深度探索与实际应用

在当今经济环境下&#xff0c;股票市场无疑是投资者们密切关注的重要领域。然而&#xff0c;股票价格的波动常常令投资者感到困扰&#xff0c;难以捉摸其变化规律。因此&#xff0c;构建一种能够有效预测股票价格波动趋势的模型显得尤为重要。本文将深入探讨基于时间序列分析的…

循环buffer“一写多读“

1.往期回顾 一个简单实用的循环buffer&#xff0c;用于缓冲数据&#xff01;测试500M数据&#xff0c;耗时1.3秒。 C语言版本的循环buffer比C版本的速度更快&#xff01;测试500M数据0.5秒&#xff0c;达9.25Gbps左右&#xff01; C 语言免拷贝版本循环 buffer 比拷贝版本快了…

Golang并发编程-协程goroutine的信道(channel)

文章目录 前言一、信道的定义与使用信道的声明信道的使用二、信道的容量与长度三、缓冲信道与无缓冲信道缓冲信道无缓冲信道四、信道的初体验信道关闭的广播机制总结前言 Goroutine的开发,当遇到生产者消费者场景的时候,离不开 channel(信道)的使用。 信道,就是一个管道,…

Redis介绍及安装配置

1 什么是Redis Redis 的定义&#xff1a;Redis&#xff08;Remote Dictionary Server 远程字典服务&#xff09;是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 可见Redis和我们最经常使用的MySQL都…

7-1 Java程序设计-异常处理-自定义异常类

题目&#xff1a; 定义一个具有三条边的三角形类Triangle。在三角形中&#xff0c;任意两边之和大于第三边。三角形类Triangle写遵从这一个规则。定义一个IllegalTriangleException类&#xff0c;修改类Triangle的构造方法&#xff0c;如果创建的三角形的边违反了这一规则&am…

技术创新加速生态繁荣 | 软通动力子公司鸿湖万联亮相OpenHarmony开发者大会2024

5月25日&#xff0c;由开放原子开源基金会OpenHarmony项目群工作委员会主办的OpenHarmony开发者大会2024在深圳成功举行。本次大会紧扣OpenHarmony 4.1 Release版本发布契机&#xff0c;以“鸿心聚力&#xff0c;智引未来”为主题、通过“1场主论坛6场技术分论坛”承载&#xf…

谈谈关于mysql索引的理解

索引 我们在学习java中用来表示数组的下标例如定义一个变量int i 这就表示一个索引,因为索引的英文单词是index,索引也可以称为是书的目录,它可以方便我们查询自己所需要的内容,通过索引我们可以快速找到自己的需求.此时引出了索引的概念,在数据库中. 关于索引的相关操作 有…

mysql 8 [HY000][1114] The table ‘/tmp/#sql4c3_3e5a0_2‘ is full

分组有个比较大的表&#xff0c;出现了临时表空间满了的情况&#xff1b; 试用该sql 语句&#xff1a; SHOW GLOBAL VARIABLES LIKE internal_tmp_mem_storage_engine; 可以看到 默认临时结果是用临时表存的&#xff0c;在mysql的my.cnt可以改临时空间的大小 但是磁盘哪有内…

【竞赛】本科阶段部分证书考试 科研竞赛 的 网站导航(算法、项目、安全、数据、科研)

【竞赛】本科阶段部分证书考试 & 科研竞赛 的 网站导航&#xff08;算法、项目、安全、数据、科研&#xff09; 文章目录 1、算法竞赛&#xff08;重点&#xff09;PAT/CSP天梯赛/蓝桥/力扣ICPC算法竞赛编程工具代码源其他 2、项目竞赛安全与数据&#xff08;重点&#xf…

5.28学习总结

java复习总结 hashcode()和equals() hashcode():在Object里这个方法是通过返回地址的整数值来生成哈希值。 equals():在Object里这个方法是通过比较他们的内存地址来确定两个对象是否相同。 运行效率&#xff1a;hashcode的时间复杂度为O(1)&#xff08;因为只要计算一次哈…

js 对象内的方法this不指向对象?js对象中this指向的问题

缘起 今天在写一个工具方法封装成对象模块导出时&#xff0c;由于成员方法内调用了其他成员方法&#xff0c;而且成员方法用了箭头函数() > 定义&#xff0c;导致使用 this.成员方法() 不能调用该成员方法&#xff0c;console.log(this)发现为 undefined。 export default {…

Vue 菜单组件开发教程

在 Vue 项目中&#xff0c;我们常常需要构建各种菜单结构。下面就来详细介绍如何基于给定的代码来开发一个菜单组件。 组件部分 一、模板部分 <template> <template v-for"item in menuTree" :key"item._id"> <el-sub-menu v-if"i…