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入门第四天消息盒子+对话框+定时器+日期和时间(源码)相关推荐

  1. QT:布局管理器消息盒子对话框

    让组件在水平和垂直方向对齐 有三种常用布局管理器: 水平,QHBoxLayout 垂直,QVBoxLayout 网格,QGridLayout(使布局好的界面嵌套到主窗口) 1.让组件大小固定 修改属性 ...

  2. 蓝桥杯嵌入式(STM32G431RBT6)入门第四天——系统嘀嗒定时器(SysTick)|CSDN创作打卡

    和往常一样,先建立SysTick定时器练习文件夹,并在里面建立SysTick_test和SysTick两个子文件夹. STM32的通用定时器是通过一个可编程预分频器(Prescaler)驱动的16位自 ...

  3. QT入门第十四天 串口通信协议+收发数据+波特率+数据位+停止位+奇偶校验+串口识别射频RFID的卡号

    QT入门第十四天 串口通信[QT入门第十四天 串口通信协议+收发数据+波特率+数据位+停止位+奇偶校验+串口识别射频RFID的卡号 第一章 常见的硬件通信接口协议 [1]硬件通信接口协议 [2]使用串 ...

  4. QT入门第十天 QT安装和使用alsa库和jpeg库实现音视频录制

    QT入门第十天QT安装和使用alsa库和jpeg库实现音视频录制 第一章 ALSA库的移植和使用 1.ALSA简介 2.移植ALSA (1)移植步骤 3.把移植好的库下载到开发板配置 4.使用移植好的 ...

  5. QT入门第七天 网络编程TCP/IP/UDP+Http和JSON解析+qt事件软键盘【CSDN最详细】

    网络编程+Http和JSON解析+qt事件软键盘 第一章 QT中的网络编程 [1]涉及到的类 [2]tcp协议的流程 [2.1]服务器的流程 socket-->bind-->listen- ...

  6. R语言入门第四集 实验三:数据可视化

    R语言入门第四集 实验三:数据可视化 一.资源 [R语言]R语言数据可视化--东北大学大数据班R实训第三次作业 在r中rowsums_R语言初级教程(15): 矩阵(下篇) R语言环境变量的设置 环境 ...

  7. Linux入门第四集!Jar包的入门、使用、部署!怎么打Jar包?

    Linux入门第四集!Jar包的入门.使用.部署!怎么打Jar包? 一.首先要确保JDK8已经安装成功 Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64. ...

  8. C#编程入门第四课,异常,switch-case选择结构,循环结构 while,break作用,do-while循环

    C#编程入门第四课 文章目录 C#编程入门第四课 1.异常 2. switch- case选择结构 3. 循环结构 while 4. break 作用 5. do-while循环 1.异常 那行代码有 ...

  9. Android 入门第四讲03-列表RecyclerView(RecyclerView使用步骤(详),RecyclerView指定一行item的数目+指定一行item的数量,并且设置列表方向)

    Android 入门第四讲03-列表RecyclerViewRecyclerView使用步骤(详),RecyclerView指定一行item的数目+指定一行item的数量,并且设置列表方向) 1.Re ...

  10. 分布式定时任务—xxl-job学习(四)——调度中心web页面端api调用源码分析

    分布式定时任务-xxl-job学习(四)--调度中心web页面端api调用源码分析 前言 一.controller目录下非controller类 1.1 PermissionLimit自定义注解 1. ...

最新文章

  1. pip 另一种安装方法:python setup.py install
  2. mysql.net开发驱动_mysql数据库.net开发驱动(mysql connector net )
  3. 初步认识Volatile-volatile 的作用
  4. 纯jsp实现评论功能_自己实现的java手写tomcat
  5. apk改之理_一份礼物.apk-O泡果奶的逆向分析
  6. js中奇怪的问题 同步ajax,modal遮罩层
  7. 滴滴出行高并发高性能的分布式架构设计之道
  8. ios protobuf java_iOS 集成Protobuf,转换proto文件
  9. 【程序源代码】万岳在线教育系统WEB开源版
  10. 2020软考高级系统分析师,你想知道的全在这
  11. 索尼PS4破解之用户层代码执行(Part2)
  12. 笔记-MFC更换鼠标图片
  13. ​携程网全国各城市酒店数据​评论数据
  14. ZK锦集:Zookeeper的下载和安装 | 真/伪集群的快速搭建| 总结的很详细
  15. win10系统 oracle11g的安装流程
  16. 欧几里得定理(nyoj775)
  17. 过一遍Java中的API
  18. EasyUI TreeGrid滚动条异常
  19. linux log4j2.xml,动态配置log4j2.xml日志输出文件的位置
  20. xjoi1.4行李托运

热门文章

  1. SQL语句的连接-内连接 外连接
  2. bzoj4199品酒大会
  3. Effective Kotlin 中文版
  4. js工具栏悬浮提示文字js特效
  5. android 自定义圆点,Android自定义带圆点的半圆形进度条
  6. 读书有感:《失业的程序员》
  7. 移动硬盘驱动器读到,但不显示盘符
  8. 计算机安全模式无法启动,我的电脑安全模式可以进去,为什么不能正常起动呢?...
  9. uni-app云打包 No enum constant com.pandora.pack.core.PackagePlatform.ANDROID_CLC
  10. 朱晔的互联网架构实践心得S1E1:Pilot