QT实现串口调试助手(三):保存日志、QSS样式载入

工程源码:https://github.com/zhangfls/QT_UartAnalysisTool

上一篇:

QT实现串口调试助手(二)

下面开始实现串口调试助手的一些附加功能:

一、日志保存读取

1、引入文件操作相关头文件

#include <QDir>
#include <QFileInfo>
#include <QFileDialog>

2、增加两个按钮,一个保存、一个读取

3、增加保存按钮触发槽函数

void MainWindow::on_saveDataButton_clicked()
{
    QString curPath = QDir::currentPath();      //获取系统当前目录
    QString dlgTitle = "另存为一个文件";           //对话框标题
    QString filter = "文本文件(*.txt);;所有文件(*.*);;h文件(*.h)";    //文件过滤器
    QString aFileName = QFileDialog::getSaveFileName(this,dlgTitle,curPath,filter);
    if (aFileName.isEmpty())
        return;
    saveTextByIODevice(aFileName);
}

4、通过IOdevice实现将文本框内数据输出到文本中保存

bool MainWindow::saveTextByIODevice(const QString &aFileName)
{
    QFile aFile(aFileName);
    if (!aFile.open(QIODevice::WriteOnly | QIODevice::Text))
        return false;
    QString str = ui->uartReadPlain->toPlainText();     //整个内容作为字符串
    QByteArray strBytes = str.toUtf8();                 //转换为字节数组
    aFile.write(strBytes,strBytes.length());            //写入文件
    aFile.close();
    ui->uartReadPlain->clear();
    send_buf_len = 0;
    rec_buf_len = 0;
    ui->TXLenLabel->setText("0bytes");
    ui->RXLenLabel->setText("0bytes");

    QMessageBox::information(NULL, "提示", "保存完成\r\n");
    return true;
}

5、增加载入日志按钮触发槽函数

void MainWindow::on_readLogButton_clicked()
{
    QString curPath=QDir::currentPath();    //获取系统当前目录
    QString dlgTitle="打开文件";            //对话框标题
    QString filter="文本文件(*.txt);;程序文件(*.h *.cpp);;所有文件(*.*)"; //文件过滤器
    QString aFileName=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);

    if (aFileName.isEmpty())
        return;
    openTextByIODevice(aFileName);
}

6、通过IOdevice实现将文本内容读取出来加载到界面文本框中

bool MainWindow::openTextByIODevice(const QString &aFileName)
{
    QFile aFile(aFileName);
    if (!aFile.exists())                //文件不存在
        return false;
    if (!aFile.open(QIODevice::ReadOnly | QIODevice::Text))
        return false;
    ui->uartReadPlain->insertPlainText(QString(aFile.readAll()));
    aFile.close();
    return  true;
}

二、QSS样式载入

1、可以通过载入QSS文件定义界面样式,至于具体样式,需要根据需求自行用QSS语法做处理,或者套用一些模板。

    QFile qss("qss/styleDark1.qss");
    if(qss.open(QFile::ReadOnly))
    {
        qDebug()<<"qss load";
        QTextStream filetext(&qss);
        QString stylesheet = filetext.readAll();
        this->setStyleSheet(stylesheet);
        qss.close();
    }

2、使用QSS后可以界面空间控件和背景个性化:

三、图标修改

1、在项目.pro文件中添加 ,等式右值为自定义文件名

RC_FILE = logo.rc

2、在项目主目录新建一个叫logo.rc的文件,内容:

IDI_ICON1 ICON DISCARDABLE "logo.ico"

这个logo.ico是自己定义的文件名

3、在项目主目录加入图标文件logo.ico,具体ico格式文件用工具自行生成。

4、运行可以看到loc已经发生变化


 

下一篇:

QT实现串口调试助手(四):主题设置、命令面板

猜你喜欢

转载自blog.csdn.net/zhangfls/article/details/109841886