Qt实战案例(5)——程序启动画面的实现(QSplashScreen)

一、项目介绍

多数应用程序启动时都会在程序完全启动前显示一个启动画面,在程序完全启动后消失。程序启动画面可以显示相关产品的一些信息,使用户在等待程序启动的同时了解相关产品的功能,这也是一个宣传的方式。Qt中提供了QSplashScreen类实现了在程序启动过程中显示启动画面的功能。

二、项目基本配置

新建一个Qt案例,项目名称为“SplashScreen”,基类选择“QMainWindow”,取消创建UI界面复选框的选中状态,完成项目创建。

三、UI界面设计

无UI界面

四、主程序实现

4.1 mainwindow.h头文件

无需操作

4.2 mainwindow.cpp源文件

设置主界面实现,主要内容为:设置窗口标题,设置显示文字等。
核心代码如下:

#include<QTextEdit>
#include<windows.h>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    setWindowTitle("Splash Example");//设置窗口标题
    QTextEdit *edit=new QTextEdit;//新建可编辑文本
    edit->setText("Splash Example!");//显示内容
    setCentralWidget(edit);//将edit设置为中心部件
    resize(600,450);//调整窗体大小
    Sleep(1000);//休眠1000ms
}

显示内容如下:
在这里插入图片描述

由于启动画面通常在程序初始化时间较长的情况下出现,为了使程序初始化时间加长以显示启动画面,此处调用Sleep()函数,使窗口在初始化时休眠1000ms。
【注意】:调用Sleep()函数之前需要首先声明头文件,如果是windows平台,则需要

#include <windows.h>

如果是linux平台,则需要:

#include <sys/stat.h>

4.3 main.cpp源文件

在编写main.cpp之前,首先需要添加资源文件,资源文件添加十分简单,这里不进行详细介绍,我的代码中将图片r.gif添加到Qt资源文件res中,如下所示。
在这里插入图片描述
然后编写main.cpp代码。完整代码如下:

#include "mainwindow.h"
#include <QApplication>
#include<QPixmap>
#include<QSplashScreen>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QPixmap pixmap(":/res/r.gif");//创建QPixmap对象,设置启动图片
    QSplashScreen splash(pixmap);//利用QPixmap对象创建一个QSplashScreen对象
    splash.show();//显示此启动图像
    a.processEvents();//使程序在显示启动画面时仍能响应鼠标等其他事件
    MainWindow w;
    w.show();
    splash.finish(&w);//表示在主窗体对象初始化完成后,结束启动画面
    return a.exec();
}

图片首先出现1000ms(即1s),然后弹出”Splash Example“窗体。

五、效果演示

在这里插入图片描述
完整代码可参考:https://download.csdn.net/download/didi_ya/27328396

ok,以上便是全部内容了,如果对你有所帮助,记得点个赞哟~


Question:
这里遇到一个问题:明明加载的是gif动画,为什么显示的时候只显示的静态图片???
这个问题将在下一篇文章中进行介绍。欢迎关注~
下一篇文章:https://blog.csdn.net/didi_ya/article/details/122177650

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
QT5串口编程可以用于编写简单的上位机,通过串口与下位机进行通信。下面是一个简单的上位机编写示例: 首先,要在QT项目中加入串口模块,可以通过在.pro文件中加入以下代码实现: ``` QT += serialport ``` 接下来,创建一个新的类,命名为SerialPort,继承自QObject,并添加以下代码: ```cpp #include "serialport.h" SerialPort::SerialPort(QObject *parent) : QObject(parent) { serial = new QSerialPort(this); connect(serial, &QSerialPort::readyRead, this, &SerialPort::readData); } void SerialPort::openPort(QString portName, qint32 baudRate) { serial->setPortName(portName); serial->setBaudRate(baudRate); if(serial->open(QIODevice::ReadWrite)) { qDebug() << "Serial port is open"; } else { qDebug() << "Serial port failed to open"; } } void SerialPort::closePort() { if(serial->isOpen()) { serial->close(); qDebug() << "Serial port is closed"; } } void SerialPort::readData() { QByteArray data = serial->readAll(); qDebug() << "Received data: " << data; // 在这里可以对接收到的数据进行处理 } void SerialPort::writeData(QByteArray data) { if(serial->isOpen()) { serial->write(data); qDebug() << "Sent data: " << data; } else { qDebug() << "Serial port is not open"; } } ``` 在主窗口中,可以使用SerialPort类的实例来控制串口的打开、关闭和数据的读写,可以通过按钮来触发相应的操作。下面是一个简单的主窗口实现: ```cpp #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); serialPort = new SerialPort(this); connect(ui->openButton, &QPushButton::clicked, this, &MainWindow::openPort); connect(ui->closeButton, &QPushButton::clicked, this, &MainWindow::closePort); connect(ui->sendButton, &QPushButton::clicked, this, &MainWindow::sendData); } MainWindow::~MainWindow() { delete ui; } void MainWindow::openPort() { QString portName = ui->portComboBox->currentText(); qint32 baudRate = ui->baudRateComboBox->currentText().toInt(); serialPort->openPort(portName, baudRate); } void MainWindow::closePort() { serialPort->closePort(); } void MainWindow::sendData() { QString data = ui->sendLineEdit->text(); serialPort->writeData(data.toUtf8()); ui->sendLineEdit->clear(); } ``` 在QT设计器中,可以创建一个MainWindow窗口,包含一个QComboBox用于选择串口号,一个QComboBox用于选择波特率,一个QLineEdit用于输入发送的数据,以及几个QPushButton用于触发相应的操作。 以上就是一个简单的QT5串口编程的上位机实现,你可以根据具体的需求进行进一步的修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wendy_ya

您的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值