Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >04 qt功能类、对话框类和文件操作

04 qt功能类、对话框类和文件操作

作者头像
天天Lotay
发布于 2023-10-15 10:34:10
发布于 2023-10-15 10:34:10
25700
代码可运行
举报
文章被收录于专栏:嵌入式音视频嵌入式音视频
运行总次数:0
代码可运行

一 QT中时间和日期

  • 时间 ---- QTime
  • 日期 ---- QDate

对于Qt而言,在实际的开发过程中, 1)开发者可能知道所要使用的类 ---- >帮助手册 —>索引 -->直接输入类名进行查找 2)开发者可能不知道所要使用的类,只知道开发需求文档 ----> 帮助 手册,按下图操作:

1 QTime

头文件:#include <QTime> 模块:在项目的pro文件中,查看是否包含模块:QT += core

对于QTime对象,主要包括时 分 秒 毫秒,数字时间,一个主要的功能就是,用户可以自己设置一个时间(时 分 秒 ),然后可以给这个时间来设置毫秒数,从而达到时间可以正常运行。 创建时间的对象的方式有两种:构造函数----- 指定一个时间 通过静态成员函数—currentTime() — 获得当前操作系统的本地时间 功能: 1)直接获取操作系统的时间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 [static] QTime QTime::currentTime()  //获取当前的系统时间,就是此时的时间,不会自动往下走

2)可以创建一个QTime对象 ,然后再指定该对象时,分,秒

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QTime(int h, int m, int s = 0, int ms = 0)

QTime time(0,0,0); //可以做为秒表的功能
再通过增加毫秒的时间,增加到1000,秒针就会自动加1
2 案例:嵌入式产品的系统时间实现

QTime + QTimer 第一步:通过currentTime() ----->得到QTime对象 第二步:将QTime时间更新UI(QLabel)-----> tostring() QString QTime::toString(const QString &format) const —将时间对象转换成字符串,并且在转换字符串时,可以指定字符串显示的格式

字符串

含义

h

the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)

hh

the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)

H

the hour without a leading zero (0 to 23, even with AM/PM display)

HH

the hour with a leading zero (00 to 23, even with AM/PM display)

m

the minute without a leading zero (0 to 59)

mm

the minute with a leading zero (00 to 59)

s

the whole second, without any leading zero (0 to 59)

ss

the whole second, with a leading zero where applicable (00 to 59)

zzz

the fractional part of the second, to millisecond precision, including trailing zeroes where applicable (000 to 999).

使用如下: “hh:mm:ss” 或者 “hh-mm-ss

3 QTime常用接口

1)QString QTime::toString(QStringView format) const 功能说明:将一个时间对象以指定格式转换成字符串 指定格式:“hh:mm:ss” 或者 “hh-mm-ss” 2)[static] QTime QTime::currentTime() 功能:获取系统当前的时间 3) boolsetHMS(int h, int m, int s, int ms = 0)//给时间对象设置时分秒

inthour() const

intminute() constintmsec() const

QTimeaddMSecs(int ms) const// 在给定的时间基础上,增加指定的毫秒QTimeaddSecs(int s) const// 在给定的时间基础上,增加指定的秒

二 日期类 QDate

功能:获取系统当前的日期 创建对象的方法: 1)构造函数:QDate(int y, int m, int d) 2)静态函数:currentDate() 功能接口函数: QString QDate::toString(const QString &format) const — 将日期转换成字符串 指定格式:

字符串

含义

d

the day as number without a leading zero (1 to 31)

dd

the day as number with a leading zero (01 to 31)

ddd

the abbreviated localized day name (e.g. ‘Mon’ to ‘Sun’). Uses the system locale to localize the name, i.e. QLocale::system().

dddd

the long localized day name (e.g. ‘Monday’ to ‘Sunday’). Uses the system locale to localize the name, i.e. QLocale::system()

M

the month as number without a leading zero (1 to 12)

MM

the month as number with a leading zero (01 to 12)

MMM

the abbreviated localized month name (e.g. ‘Jan’ to ‘Dec’). Uses the system locale to localize the name, i.e. QLocale::system().

MMMM

the long localized month name (e.g. ‘January’ to ‘December’). Uses the system locale to localize the name, i.e. QLocale::system().

yy

the year as two digit number (00 to 99)

yyyy

the year as four digit number. If the year is negative, a minus sign is prepended in addition.

比如:"yyyy/MM/dd"

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ui->dateLabel->setText(QDate::currentDate().toString("yyyy-MM-dd"));
   qDebug() << QDate::currentDate().year(); // 获得当前的年份
   qDebug() << QDate::currentDate().month(); // 获得当前的月数
   qDebug() << QDate::currentDate().dayOfWeek(); //这周的第几天

三 QT对话框类部件

对于对话框的功能,在GUI图形界面开发过程,使用是非常多,那么Qt也提供了丰富的对话框类。 The QDialog class is the base class of dialog windows,QDialog 是所有对话框的基类,对话框的框架类图如下:

3.1 QColorDialog—颜色对话框

该类主要来获得一个颜色(The QColorDialog class provides a dialog widget for specifying colors) 通过该类的静态成员函数(The static getColor() function shows the dialog),打开的对话框来选择 一个颜色。 头文件:#include<QColorDialog>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[static] QColor QColorDialog::getColor(const QColor &initial = Qt::white,
 QWidget *parent = nullptr, const QString &title = QString(),
 QColorDialog::ColorDialogOptions options = ColorDialogOptions())

功能:得到一个颜色(QColor) 参数说明:

  • 参数一:const QColor &initial = Qt::white ---- 默认一个初始化的颜色,一般情况下,默认即可
  • 参数二:QWidget *parent = nullptr ---- 这个参数说明,跟对话框(QColorDialog)之间关系, 该对话框的父部件,设置为nullptr,则说明对话框没有父部件,对话框跟界面是没有关系 两个都是独立存在,如果想要设置的话,通常设置为 this(通常为界面类对象)
  • 参数三:const QString &title = QString() ---- 对话框的标题
  • 参数四:QColorDialog::ColorDialogOptions options = ColorDialogOptions() 对话框的颜色选项,类似对话框皮肤的设置

返回值: QColor ----- RGB

参数

含义

int

green() const

int

blue() const

int

red() const

案例:设置一个控件的背景色

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void ColorWindow::on_colorSetButton_clicked()
{
//[1]打开颜色对话框,并选择一个颜色
    QColor color =   QColorDialog::getColor();
//[2] 将颜色值分别获取它的rgb
    int red = color.red();
    int green = color.green();
    int blue = color.blue();
//[3] 将rgb设置给控件
    ui->testLabel->setStyleSheet(QString("background-color: rgb(%1, %2, %3);").arg(red)
                                 .arg(green)
                                 .arg(blue));
}
3.2 QFontDialog—字体对话框

让用户来选择一个字体(The QFontDialog class provides a dialog widget for selecting a font) 头文件:#include<QFontDialog>

函数原型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[static] QFont QFontDialog::getFont(bool *ok, const QFont &initial,
 QWidget *parent = nullptr, const QString &title = QString(),
 QFontDialog::FontDialogOptions options = FontDialogOptions())

功能:得到一个字体对象(QFont) 参数说明:

  • 参数一:bool *ok ----> 对获得字体结果,成功返回true,否则,返回 false
  • 参数二:const QFont &initial ----> 初始化字体
  • 参数三:QWidget *parent = nullptr ----> 字体对话框的父部件,一般可以传this,或者不传
  • 参数四:const QString &title = QString() ----> 对话框标题
  • 参数五:QFontDialog::FontDialogOptions options = FontDialogOptions() — 可选项,默认即可
  • 返回值:
  • QFont(字体) 通过结合函数setFont来给一个控件设置一个字体
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bool ok;
  QFont font = QFontDialog::getFont(&ok, QFont("Times", 12), this);
  if (ok) {
      // font is set to the font the user selected
  } else {
      // the user canceled the dialog; font is set to the initial
      // value, in this case Times, 12.
  }

案例:给一个控件设置字体

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void FontDialogWin::on_fontSetButton_clicked()
{
       //[1] 打开对话框
    bool ok;
      QFont font =  QFontDialog::getFont(&ok,this);
      if(ok)
      {
          qDebug() << "ok = " << ok << font.toString();
          //[2] 如果获得成功,则将font设置给指定的控件
          ui->label->setFont(font);
      }else {
          qDebug() << " get font failed";
      }

}
3.3 QFileDialog—文件对话框

打开文件对话框,可以让用户选择一个文件或者目录(路径),并不能打开文件中的内容,有了文件的路径,就可以对文件进行操作(打开 读 写 关闭等操作)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(The QFileDialog class provides a dialog that allow users to select files or directories)

头文件:#include <QFileDialog> 静态函数的原型:

参数

含义

QString

getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = ShowDirsOnly)

QString

getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())

函数功能:得到一个文件的路径 参数说明:

  • 参数一:QWidget *parent = nullptr ----- 该对话框的父部件,一般传this
  • 参数二: const QString &caption = QString() — 对话框的标题
  • 参数三:const QString &dir = QString() ---- 文件所在目录 QString()— 字符串匿名对象
  • 参数四:const QString &filter = QString() — 文件过滤器,指定显示指定格式文件
  • 参数五:QString *selectedFilter = nullptr ---- 过滤器
  • 参数六:QFileDialog::Options options = Options() — 文件对话框的可选项
  • 返回值:QString ---- 文件的路径

它经常结合QFile来进行读或者写文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QString fileName = 
QFileDialog::getOpenFileName(this, tr("Open File"),/*tr()---国标化标准*/
                         "/home", //绝对路径
                   tr("Images (*.png *.xpm *.jpg)"));

如果要设置过滤器,类型之间使用";;",比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"

具体用法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void FileDialogWin::on_browseButton_clicked()
{
    //[1]打开文件对话框
     QString filePath =  QFileDialog::getOpenFileName(this,"打开文件",
          "D:/Qt/qt_gz2057_workspace/DAY4/cpp_demo6_qfiledialog",
          "Text files (*.cpp *.h)");
     //[2] 将文件路径更新UI
     ui->fileEdit->setText(filePath);

   //[3]根据文件路径打开此文件

}

指定的路径都是以Linux路径的标准来执行

3.4 QFile ---- 文件

该类可以用来读写文件的数据(The QFile class provides an interface for reading from and writing to files) 头文件:#include <QFile> QFile操作文件流程:

  1. 第一步:根据文件的路径,将文件转换成QFile对象 ----- > 创建一个文件对象 — 构造函数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QFile(const QString &name)
QFile()void setFileName(const QString &name)
  1. 第二步:打开文件---- open
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bool open(QIODevice::OpenMode mode) override
  1. 第三步:访问文件 ---- read 或者 write
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QByteArray QIODevice::readAll()  ----> 一次性读取文件中所有的数据,数据以
QByteArray(字节数组)
  1. 第四步:关闭文件 ---- close

具体的使用方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void FileDialogWin::on_browseButton_clicked()
{
    //[1]打开文件对话框
     QString filePath =  QFileDialog::getOpenFileName(this,"打开文件",
                    "D:/Qt/qt_gz2057_workspace/DAY4/cpp_demo6_qfiledialog",
                    "Text files (*.cpp *.h)");
     //[2] 将文件路径更新UI
     ui->fileEdit->setText(filePath);

   //[3]根据文件路径打开此文件
    QFile file(filePath);

  //[4] 打开文件 --- open
    if(file.open(QIODevice::ReadOnly))
    {
        QByteArray array =  file.readAll();
        qDebug() << "ARRAY= " << array;
    }

   file.close();
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 void SaveFileWin::on_saveButton_clicked()
{
      //[1] 打开另存为对话框,并手动设置文件的名字
    QString filename = QFileDialog::getSaveFileName(this);

    //[2] 创建文件和打开文件
    QFile file(filename);

    if(file.open(QIODevice::WriteOnly))
    {
        //[3] 获得UI控件上的内容,再将它写入到文件中
        QString data = ui->textEdit->toPlainText();
         //QString ----> QByteArray ----  QString::toUtf8() const : QByteArray
        file.write(data.toUtf8());
    }
    file.close();
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Qt】:Dialog 对话框
模态对话框 指的是:显示后无法与父窗口进行交互,是⼀种阻塞式的对话框。使用 QDialog:: exec () 函数调用。
IsLand1314
2025/02/28
1700
【Qt】:Dialog 对话框
【QT】Qt 窗口 (QMainWindow)
QMainWindow 是一个为用户提供主窗口程序的类,继承自 QWidget 类,并且提供了一个预定义的布局。QMainWindow 包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个浮动窗口(铆接部件)(dock widgets)、⼀个状态栏(status bar) 和⼀个 中心部件(central widget),它是许多应用程序的基础,如文本编辑器,图片编辑器等。如下图为 QMainwindow 中 各组件所处的位置:
YoungMLet
2024/07/16
4960
【QT】Qt 窗口 (QMainWindow)
【QT】Qt窗口(下)
消息对话框是非常常见常用的界面元素,主要用于为用户提示重要信息,强制用户进行选择操作 QMessageBox类中定义了静态成员函数有四个
s-little-monster
2024/11/01
1530
【QT】Qt窗口(下)
Qt入门系列(二)
选中mainWindow.cpp右键->在Explor中显示->粘贴进来(显示包含的目录)
用户9831583
2022/06/16
2K0
Qt入门系列(二)
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
2.4默认创建有窗口类,yWidget,基类有三种选择:QWidget、QMainWindowQDialog
Arya
2024/10/31
5630
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
Qt学习(二)------实例mynotepad制作
最近在看高老师的视频教程,自己跟着做了一个txt编辑器,功能很简单,能实现编辑,保存,撤销,复制粘贴等基础功能;关于那边有一些特效
致Great
2023/08/26
2200
Qt学习(二)------实例mynotepad制作
9.QT-标准对话框
Qt提供的可复用的标准对话框,全部继承自QDialog类,如下图所示: QMessageBox:信息对话框,用于显示信息、询问问题等; QFileDialog:文件对话框 QColorDialog:颜
诺谦
2018/05/28
1.4K0
基于Qt的UDP通信、TCP文件传输程序的设计与实现——QQ聊天群聊
QQ是一款优秀的聊天软件,本文将提供主要代码和思路来实现一个类似于QQ群聊的网络聊天软件,大致有以下俩个功能:
秋名山码神
2023/11/23
9240
基于Qt的UDP通信、TCP文件传输程序的设计与实现——QQ聊天群聊
C/C++ Qt 标准Dialog对话框组件应用
在Qt中对话框分为两种形式,一种是标准对话框,另一种则是自定义对话框,在一般开发过程中标准对话框使用是最多的了,标准对话框一般包括 QMessageBox,QInputDialog,QFileDialog 这几种,这里我将总结本人在开发过程中常用到的标准对话框的使用技巧。
王瑞MVP
2022/12/23
8100
C/C++ Qt 标准Dialog对话框组件应用
【QT】文件系统相关 -- QFile
🔥 文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库,提供了跨平台的文件操作能力。Qt 提供了很多关于⽂件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件制或重命名等
IsLand1314
2025/03/15
1380
【QT】文件系统相关 -- QFile
Qt学习之路_6(Qt局域网聊天软件)
http://www.cnblogs.com/tornadomeet/archive/2012/07/04/2576355.html
bear_fish
2018/09/20
3.4K0
Qt学习之路_6(Qt局域网聊天软件)
学习 QT 过程中的一些笔记
学习 QT 时候做的一些笔记 目录 目录 按钮常用控件 API QT 窗口体系 信号和槽 点击按钮关闭窗口 自定义信号和槽 当自定义信号和槽出现重载 无参信号和有参信号与槽连接 Lambda 表达式 利用 Lambda 表达式实现点击按钮关闭窗口 QMainWindow 菜单栏 工具栏 状态栏 标签控件 浮动窗口 核心部件 资源文件 对话框 话框分类: 标准对话框 其他标准对话框 界面布局 控件 按钮组 QListWidget 列表容器 按钮常用控件 API QPushButton * btn = new
HauHau
2022/01/12
1.2K0
Qt 学习记录
[],标识一个 Lambda 的开始,这部分必须存在,不能省略。外部变量访问方式说明符只能使用定义 Lambda 为止时 Lambda 所在作用范围内可见的局部变量(包括 Lambda 所在类的 this)。外部变量访问方式说明符有以下形式:
小简
2023/01/04
7.3K0
Qt 学习记录
Qt标准对话框的使用
学习编程个人觉得还是得从代码谈起,一方面有利于加深理解,另一方面也方便使(摘)用(抄)。
mythsman
2022/11/14
5540
Qt 教程二
因为Qt是一个C++框架, 因此C++中所有的语法和数据类型在Qt中都是被支持的, 但是Qt中也定义了一些属于自己的数据类型, 下边给大家介绍一下这些基础的数类型。
用户11332765
2024/10/28
3080
QT的基本知识「建议收藏」
QT是一个跨平台应用程序和UI开发框架。具体的安装以及源文件的下载这里不详细介绍。 要在QT界面上添加一个按钮,可以有两种方法:一个是直接拖放一个按钮即可;另一种则是通过程序来添加一种按钮。
全栈程序员站长
2022/08/29
6510
QT的基本知识「建议收藏」
自定义Qt对话框
今天就简单简单写个自定义对话框分享给大家。 演示 上代码! 自定义对话框的使用: #include <QApplication> #include <QDebug> #include "Dialog
Qt君
2020/07/17
1.7K0
C++ Qt开发:标准Dialog对话框组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍标准对话框QInputDialog、QFileDialog这两种对话框组件的常用方法及灵活运用。
王瑞MVP
2023/12/17
7190
C++ Qt开发:标准Dialog对话框组件
Qt项目NotePad设计
仿照记事本的菜单栏进行设计,利用利用Designer设计UI界面万能的UI设计方案
DeROy
2020/07/10
1.6K0
Qt项目NotePad设计
【QT】qt 文件操作
文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库,提供了跨平台的文件操作能力。 Qt 提供了很多关于文件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件复制或重命名等。
YoungMLet
2024/07/30
2370
【QT】qt 文件操作
相关推荐
【Qt】:Dialog 对话框
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验