QT入门第四天消息盒子+对话框+定时器+日期和时间(源码)
QT消息盒子-对话框-定时器-日期和时间
- 前言
- 第一章 消息盒子
- 1.警告盒子函数
- 2.错误盒子函数
- 2.提示信息盒子函数
- 第二章 对话框
- 1.弹出颜色对话框
- 1.1.判断颜色对话框你点击了ok还是cancel
- 2.弹出字体对话框
- 2.1 判断字体对话框你点击了ok还是cancel
- 3.弹出文件对话框
- 3.1文件的绝对路径对话框
- 3.2文件目录对话库
- 4.自定义对话框
- 4.1 在工程中添加自定义对话框
- 4.2 模态和非模态
- 第三章 QT中的文件IO操作
- 1.涉及到类和方法
- 2.QFile类
- 3.QByteArray和QString之间的相互转换
- 4.目录操作QDir
- 5.获取文件属性QFileInfo
- 5.1 构造函数
- 5.2 获取文件大小
- 5.3 判断是否是目录
- 5.4 判断是否是普通文件
- 5.5获取文件的后缀名
- 第四章 定时器
- 1.定时器
- 第五章 日期和时间
- 1.日期 QDate
- 2.时间 QTime
- 第六章 QFileInfo获取文件属性代码编写
- main.cpp
- mainwindow.cpp
- mainwindow.h
- mainwindow.ui
- 第七章 QT中的内置对话框代码编写
- main.cpp
- mainwindow.h
- mainwindow.cpp
- mainwindow.ui
- 第八章 定时器配合日期时间做电子时钟
- main.cpp
- mainwindow.h
- mainwindow.cpp
- mainwindow.ui
- 第九章 本章所有源码分享如下
前言
第一章 消息盒子
1.警告盒子函数
类: QMessageBox
方法一: 警告盒子
static warning(QWidget *parent, QString &title, QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
参数:parent --》this指针,父窗口title --》警告盒子的标题text --》要显示的文本内容buttons --》默认要显示的按钮,要显示多个按钮,使用位或连接起来defaultButton --》默认选中的那个按钮
如何判断用户究竟点击了盒子上的哪个按钮??方法:通过函数的返回值判断即可if(ret==QMessageBox::Open) //说明你点击的是open按钮{qDebug()<<"你点击了open";}if(ret==QMessageBox::Save) //说明你点击的是save按钮{qDebug()<<"你点击了save";
2.错误盒子函数
方法二:致命错误盒子
critical(QWidget *parent, QString &title, QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
参数:跟waring一模一样,只是图标不一样
2.提示信息盒子函数
方法三:提示信息盒子
information(QWidget *parent, QString &title, QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
参数:跟waring一模一样,只是图标不一样
第二章 对话框
QT中的内置对话框(QT自带的)
1.弹出颜色对话框
[static] QColor QColorDialog::getColor(const QColor &initial = Qt::white, QWidget *parent = nullptr, const QString &title = QString())
返回值:QColor是QT中用来表示颜色的一个类,成功 返回你选中的颜色
参数:initial --》初始颜色值,默认选中的是白色parent --》父窗口 thistitle --》颜色对话框的标题
1.1.判断颜色对话框你点击了ok还是cancel
方法:通过判断getColor()的返回值是否合法就能判断
bool QColor::isValid() const
点击了ok按钮 --》返回true
点击了cancel按钮 --》返回false
2.弹出字体对话框
[static] QFont QFontDialog::getFont(bool *ok, QWidget *parent = nullptr)
返回值:QFont是QT中用来表示字体的一个类, 成功 返回你选中的字体
参数:ok --》判断字体是否选中,选中了--》true
没有选中 --》false
parent --》父窗口 this
2.1 判断字体对话框你点击了ok还是cancel
方法:通过判断getFont()第一个参数
3.弹出文件对话框
3.1文件的绝对路径对话框
[static] QString QFileDialog::getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString())
返回值:成功 返回你选中的文件的绝对路径
参数:parent --》父窗口 this
caption --》标题
dir --》程序员可以指定打开哪个目录,默认打开的是工程文件夹临时产生的build目录
filter --》过滤器,过滤掉你不想查看的文件类型,只保留你想要查看的文件类型
3.2文件目录对话库
[static] QString QFileDialog::getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString()) //打开目录对话框(只显示目录)
返回值:目录路径名
参数:parent --》父窗口 this
caption --》标题
dir --》程序员可以指定打开哪个目录
4.自定义对话框
4.1 在工程中添加自定义对话框
右键点击工程名–》add new --》QT,QT设计师界面类–》模板选择QDialog
4.2 模态和非模态
模态: exec() 对话框不关闭,不能操作其它界面
非模态: show() 对话框不关闭,可以操作其它界面
第三章 QT中的文件IO操作
1.涉及到类和方法
QFile --》表示文件
QDir --》表示目录
QFileInfo --》获取文件属性信息(大小,类型,修改时间)
2.QFile类
第一步:定义QFile的对象来表示某个文件
QFile::QFile(const QString &name)
参数:name --》某个文件的路径名
第二步:打开文件
bool QFile::open(QIODevice::OpenMode mode)
返回值:成功 true 失败 false
参数:mode --》QIODevice::ReadOnlyQIODevice::WriteOnlyQIODevice::ReadWrite
第三步:读写文件
QByteArray 字节数组,类似于char []
qint64 QIODevice::read(char *data, qint64 maxSize)
返回值:读取的字节数
参数:data --》存放你读取的数据maxSize --》你打算读取多少字节的数据QByteArray QIODevice::read(qint64 maxSize)
返回值:读取到的内容
参数:maxSize --》你打算读取多少字节的数据QByteArray QIODevice::readAll() //一口气读完整个文件,适合读取小文件
返回值:QByteArray的对象,存放读取的内容write(const char *data, qint64 maxSize)
write(const char *data)
write(const QByteArray &byteArray)
第四步:关闭文件
void QFileDevice::close()
3.QByteArray和QString之间的相互转换
QByteArray --》QString 用这个构造函数搞定 QString(const QByteArray &)
QString --》QByteArray 用QByteArray QString::toUtf8() 函数搞定
4.目录操作QDir
第一步:创建QDir的对象
QDir(const QString &path = QString()) //根据目录的路径名path构建QDir对象
== 第二步==:遍历目录,获取目录中的内容
QStringList QDir::entryList()
返回值:字符串列表,存放这个目录中所有的文件名字
5.获取文件属性QFileInfo
5.1 构造函数
QFileInfo(const QString &file)
参数:file --》你要获取属性的那个文件的绝对路径
5.2 获取文件大小
qint64 QFileInfo::size() const
返回值:文件大小
5.3 判断是否是目录
bool QFileInfo::isDir() const
返回值:是目录 true
不是目录 false
5.4 判断是否是普通文件
bool QFileInfo::isFile() const
5.5获取文件的后缀名
QString QFileInfo::suffix() const
返回值:后缀名
第四章 定时器
1.定时器
(1)作用:固定的时间重复做某件事情
(2)类和相关的接口函数 QTimer
第一:构造函数
QTimer(QObject *parent = nullptr)
第二:设置定时时间(超时时间)
void setInterval(int msec)
参数:msec --》毫秒级定时
第三:启动定时器
void QTimer::start()
第四:关闭定时器
void QTimer::stop()
(3)如何判断定时时间到了 --》用信号与槽来判断
[signal] void QTimer::timeout() //一旦定时时间到了,该信号会被自动触发
第五章 日期和时间
1.日期 QDate
方法一:获取当前系统日期
[static] QDate QDate::currentDate()返回值: QDate
方法二:获取年月日
int QDate::year() const
int QDate::month() const
int QDate::day() const
方法三:按照指定格式转换日期
QString QDate::toString(const QString &format) constmydate.toString("yyyy-MM-dd");
2.时间 QTime
方法一:获取当前系统时间
[static] QTime QTime::currentTime()返回值: QTime对象
方法二:获取时分秒
int QTime::hour() const
int QTime::minute() const
int QTime::second() const
方法三:按照指定格式转换时间
QString QTime::toString(const QString &format) const
第六章 QFileInfo获取文件属性代码编写
main.cpp
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDir>
#include <QFileInfo>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建QDir对象QDir mydir("C:/Users/Administrator/Desktop/share/123");//获取目录中的内容QStringList mylist=mydir.entryList();//获取目录中所有文件的大小,类型for(int i=0; i<mylist.size(); i++){//拼接得到文件的绝对路径名QString allpath=QString("C:/Users/Administrator/Desktop/share/123/%1").arg(mylist.at(i));QFileInfo myinfo(allpath);//打印文件名字和大小qDebug()<<allpath<<" 大小是: "<<myinfo.size();//判断文件类型if(myinfo.isDir()) //是目录qDebug()<<"是个目录";else //是普通文件qDebug()<<"是普通文件";}}MainWindow::~MainWindow()
{delete ui;
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.ui
新建工程后,替换原来的.ui文件
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>600</height></rect></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralwidget"/><widget class="QMenuBar" name="menubar"/><widget class="QStatusBar" name="statusbar"/></widget><resources/><connections/>
</ui>
第七章 QT中的内置对话框代码编写
main.cpp
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_colorbt_clicked();void on_fontbt_clicked();void on_filebt_clicked();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QColorDialog>
#include <QDebug>
#include <QFontDialog>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}//颜色对话框按钮
void MainWindow::on_colorbt_clicked()
{//弹出颜色对话框QColor ret=QColorDialog::getColor(QColor(255,0,0),this,"彭老师的颜色对话框");//判断用户是否点击了okif(ret.isValid()) //说明点击ok{//qDebug()<<"用户点击了ok";//把按钮的字面值改成你选中的颜色 color:rgb(红绿蓝);QString cmd=QString("color:rgb(%1,%2,%3);").arg(ret.red()).arg(ret.green()).arg(ret.blue());ui->colorbt->setStyleSheet(cmd);}else{qDebug()<<"用户点击了cancel";}
}
//字体对话框
void MainWindow::on_fontbt_clicked()
{bool ok;QFont myfont=QFontDialog::getFont(&ok,this);//判断用户是否选中的某个字体if(ok){//qDebug()<<"选中了ok";ui->fontbt->setFont(myfont);}else{qDebug()<<"选中了cancel";}
}
//文件对话框
void MainWindow::on_filebt_clicked()
{//弹出文件对话框QString name=QFileDialog::getOpenFileName(this,"彭老师的对话框","C:/Users/Administrator/Desktop/share/123","*.txt *.xls");qDebug()<<"你选中的文件是: "<<name;
}
mainwindow.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>600</height></rect></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralwidget"><widget class="QPushButton" name="colorbt"><property name="geometry"><rect><x>170</x><y>70</y><width>251</width><height>61</height></rect></property><property name="text"><string>颜色对话框</string></property></widget><widget class="QPushButton" name="fontbt"><property name="geometry"><rect><x>170</x><y>180</y><width>251</width><height>61</height></rect></property><property name="text"><string>字体对话框</string></property></widget><widget class="QPushButton" name="filebt"><property name="geometry"><rect><x>170</x><y>310</y><width>251</width><height>61</height></rect></property><property name="text"><string>文件对话框</string></property></widget></widget><widget class="QMenuBar" name="menubar"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>22</height></rect></property></widget><widget class="QStatusBar" name="statusbar"/></widget><resources/><connections/>
</ui>
第八章 定时器配合日期时间做电子时钟
main.cpp
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_datebt_clicked();void on_timebt_clicked();void fun();
private:Ui::MainWindow *ui;QTimer *mytimer;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDate>
#include <QTime>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//初始化定时器mytimer=new QTimer(this);//设置定时时间mytimer->setInterval(1000);//关联信号与槽connect(mytimer,SIGNAL(timeout()),this,SLOT(fun()));
}MainWindow::~MainWindow()
{delete ui;
}//启动定时器
void MainWindow::on_datebt_clicked()
{mytimer->start();}
//关闭定时器
void MainWindow::on_timebt_clicked()
{mytimer->stop();
}//定时器有关的槽函数
void MainWindow::fun()
{QDate mydate=QDate::currentDate();QTime mytime=QTime::currentTime();//在lcdnumber组件上显示出来ui->lcdNumber->display(mydate.toString("yyyy-MM-dd"));ui->lcdNumber_2->display(mytime.toString("hh:mm:ss"));
}
mainwindow.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>600</height></rect></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralwidget"><widget class="QPushButton" name="datebt"><property name="geometry"><rect><x>90</x><y>10</y><width>251</width><height>61</height></rect></property><property name="text"><string>启动定时器</string></property></widget><widget class="QPushButton" name="timebt"><property name="geometry"><rect><x>400</x><y>10</y><width>251</width><height>61</height></rect></property><property name="text"><string>关闭定时</string></property></widget><widget class="QLCDNumber" name="lcdNumber"><property name="geometry"><rect><x>180</x><y>180</y><width>431</width><height>91</height></rect></property><property name="digitCount"><number>15</number></property></widget><widget class="QLCDNumber" name="lcdNumber_2"><property name="geometry"><rect><x>180</x><y>380</y><width>431</width><height>91</height></rect></property><property name="digitCount"><number>15</number></property></widget></widget><widget class="QMenuBar" name="menubar"><property name="geometry"><rect><x>0</x><y>0</y><width>800</width><height>22</height></rect></property></widget><widget class="QStatusBar" name="statusbar"/></widget><resources/><connections/>
</ui>
ui界面设计:
第九章 本章所有源码分享如下
还是原来的配方,源码自取,持续更新中
互关的可以留个言,博主的创作动力渐渐下足了
QT入门第四天消息盒子+对话框+定时器+日期和时间(源码)相关推荐
- QT:布局管理器消息盒子对话框
让组件在水平和垂直方向对齐 有三种常用布局管理器: 水平,QHBoxLayout 垂直,QVBoxLayout 网格,QGridLayout(使布局好的界面嵌套到主窗口) 1.让组件大小固定 修改属性 ...
- 蓝桥杯嵌入式(STM32G431RBT6)入门第四天——系统嘀嗒定时器(SysTick)|CSDN创作打卡
和往常一样,先建立SysTick定时器练习文件夹,并在里面建立SysTick_test和SysTick两个子文件夹. STM32的通用定时器是通过一个可编程预分频器(Prescaler)驱动的16位自 ...
- QT入门第十四天 串口通信协议+收发数据+波特率+数据位+停止位+奇偶校验+串口识别射频RFID的卡号
QT入门第十四天 串口通信[QT入门第十四天 串口通信协议+收发数据+波特率+数据位+停止位+奇偶校验+串口识别射频RFID的卡号 第一章 常见的硬件通信接口协议 [1]硬件通信接口协议 [2]使用串 ...
- QT入门第十天 QT安装和使用alsa库和jpeg库实现音视频录制
QT入门第十天QT安装和使用alsa库和jpeg库实现音视频录制 第一章 ALSA库的移植和使用 1.ALSA简介 2.移植ALSA (1)移植步骤 3.把移植好的库下载到开发板配置 4.使用移植好的 ...
- QT入门第七天 网络编程TCP/IP/UDP+Http和JSON解析+qt事件软键盘【CSDN最详细】
网络编程+Http和JSON解析+qt事件软键盘 第一章 QT中的网络编程 [1]涉及到的类 [2]tcp协议的流程 [2.1]服务器的流程 socket-->bind-->listen- ...
- R语言入门第四集 实验三:数据可视化
R语言入门第四集 实验三:数据可视化 一.资源 [R语言]R语言数据可视化--东北大学大数据班R实训第三次作业 在r中rowsums_R语言初级教程(15): 矩阵(下篇) R语言环境变量的设置 环境 ...
- Linux入门第四集!Jar包的入门、使用、部署!怎么打Jar包?
Linux入门第四集!Jar包的入门.使用.部署!怎么打Jar包? 一.首先要确保JDK8已经安装成功 Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64. ...
- C#编程入门第四课,异常,switch-case选择结构,循环结构 while,break作用,do-while循环
C#编程入门第四课 文章目录 C#编程入门第四课 1.异常 2. switch- case选择结构 3. 循环结构 while 4. break 作用 5. do-while循环 1.异常 那行代码有 ...
- Android 入门第四讲03-列表RecyclerView(RecyclerView使用步骤(详),RecyclerView指定一行item的数目+指定一行item的数量,并且设置列表方向)
Android 入门第四讲03-列表RecyclerViewRecyclerView使用步骤(详),RecyclerView指定一行item的数目+指定一行item的数量,并且设置列表方向) 1.Re ...
- 分布式定时任务—xxl-job学习(四)——调度中心web页面端api调用源码分析
分布式定时任务-xxl-job学习(四)--调度中心web页面端api调用源码分析 前言 一.controller目录下非controller类 1.1 PermissionLimit自定义注解 1. ...
最新文章
- pip 另一种安装方法:python setup.py install
- mysql.net开发驱动_mysql数据库.net开发驱动(mysql connector net )
- 初步认识Volatile-volatile 的作用
- 纯jsp实现评论功能_自己实现的java手写tomcat
- apk改之理_一份礼物.apk-O泡果奶的逆向分析
- js中奇怪的问题 同步ajax,modal遮罩层
- 滴滴出行高并发高性能的分布式架构设计之道
- ios protobuf java_iOS 集成Protobuf,转换proto文件
- 【程序源代码】万岳在线教育系统WEB开源版
- 2020软考高级系统分析师,你想知道的全在这
- 索尼PS4破解之用户层代码执行(Part2)
- 笔记-MFC更换鼠标图片
- ​携程网全国各城市酒店数据​评论数据
- ZK锦集:Zookeeper的下载和安装 | 真/伪集群的快速搭建| 总结的很详细
- win10系统 oracle11g的安装流程
- 欧几里得定理(nyoj775)
- 过一遍Java中的API
- EasyUI TreeGrid滚动条异常
- linux log4j2.xml,动态配置log4j2.xml日志输出文件的位置
- xjoi1.4行李托运
热门文章
- SQL语句的连接-内连接 外连接
- bzoj4199品酒大会
- Effective Kotlin 中文版
- js工具栏悬浮提示文字js特效
- android 自定义圆点,Android自定义带圆点的半圆形进度条
- 读书有感:《失业的程序员》
- 移动硬盘驱动器读到,但不显示盘符
- 计算机安全模式无法启动,我的电脑安全模式可以进去,为什么不能正常起动呢?...
- uni-app云打包 No enum constant com.pandora.pack.core.PackagePlatform.ANDROID_CLC
- 朱晔的互联网架构实践心得S1E1:Pilot