Qt实战:云曦Convert篇

举报
灵彧 发表于 2022/05/15 13:48:47 2022/05/15
【摘要】 云曦Convert软件主要采用C++、Python、Html等语言编写,以Qt5.11.1和Pycharm为编译器,运用DJANGO框架和相关QT模型与算法,以Python为后端,Qt为前端,前后端结合,为用户提供PDF文件合并,选择拆分,平均拆分以及语音导航等功能,实现用户对PDF编辑更加多样化的需求。

Qt实战:云曦Convert篇


@TOC


前言

云曦Convert软件主要采用C++、Python、Html等语言编写,以Qt5.11.1和Pycharm为编译器,运用DJANGO框架和相关QT模型与算法,以Python为后端,Qt为前端,前后端结合,为用户提供PDF文件合并,选择拆分,平均拆分以及语音导航等功能,实现用户对PDF编辑更加多样化的需求。


一、云曦Convert效果图

1. 回到首页:

在桌面上双击系统的图标就会出现以下的界面,这时候就会弹出了应用首页的界面,从这个界面中可以看到本软件所提供的相关功能和注意事项,如需在连网情况下适用等,如果不连接网络,将无法正常使用该软件,详情如下图1-1所示:

在这里插入图片描述

2. 选择拆分:

点击选择拆分按钮,将所需要拆分的文件拖入提示框中,如图2-1所示,然后输入要拆分的页数范围,点击拆分即可,详情见下图:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3. 平均拆分:

具体操作同选择拆分,点击平均拆分按钮,将所需要拆分的文件拖入提示框中,如图2-4所示,然后输入要平均拆分的页数,点击拆分即可,详情见下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 文件合并 :

同上述功能操作,点击文件合并按钮,将所要合并的文件拖入框中,输入合并后的文件名,点击合并,合并后打开即可,如图2-9所示。

在这里插入图片描述

5. 语音助手:

点击界面右上方类似于耳机的按钮,即可召唤出语音助手,来为您讲解我们的项目。如下图所示,该功能详细代码解析点击此处
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、相关源代码

项目框架图:
在这里插入图片描述

1. .cpp部分

assistant_1:

#include "assistant_1.h"
#include "ui_assistant_1.h"

Assistant_1::Assistant_1(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Assistant_1)
{
    ui->setupUi(this);
    BeaWindow(); //窗口优化
    BeaBtn(); //按钮优化
}

Assistant_1::~Assistant_1()
{
    delete ui;
}

//点击下一步
void Assistant_1::on_pushButton_clicked()
{
    this->close();
    Assistant_2 *assistant_2 = new Assistant_2();
    assistant_2->show();

    QMediaPlayer * player = new QMediaPlayer;

    player->setMedia(QUrl::fromLocalFile("images/assistantend.mp3"));
    player->setVolume(70);
    player->play();


}

//鼠标双击特效
void Assistant_1::mouseDoubleClickEvent(QMouseEvent *event)
{
    //判断是否为鼠标左键双击
    if(event->button() == Qt::LeftButton)
    {
        QLabel * label = new QLabel(this);
        QMovie * movie = new QMovie("://images/mouse.gif");//加载gif图片
        //设置label自动适应gif的大小
        label->setScaledContents(true);

        label->setMovie(movie);
        //这里为了调用move方便,进行resize,需要知道的是gif的大小本来也就是150*150
        label->resize(180,180);
        //设置鼠标穿透
        label->setAttribute(Qt::WA_TransparentForMouseEvents, true);
        //让label的中心在当前鼠标双击位置
        label->move(event->pos().x()-label->width()/2,event->pos().y()-label->height()/2);
        //开始播放gif
        movie->start();

        label->show();

        //绑定QMovie的信号,判断gif播放次数
        connect(movie, &QMovie::frameChanged, [=](int frameNumber) {
            if (frameNumber == movie->frameCount() - 1)//gif播放次数为1,关闭标签
                label->close();
        });
    }
}

//窗体美化
void Assistant_1::BeaWindow()
{
    setWindowFlags(Qt::FramelessWindowHint);
    this->setWindowTitle("YXConvert");
    setWindowOpacity(0.85);

    QBitmap bmp(this->size());
    bmp.fill();

    QPainter p(&bmp);
    p.setPen(Qt::NoPen);
    p.setBrush(Qt::black);
    p.drawRoundedRect(bmp.rect(),20,20);

    setMask(bmp);
}

//窗口可移动
void Assistant_1::mouseMoveEvent(QMouseEvent *event)
{
    QWidget::mouseMoveEvent(event);

    QPoint y =event->globalPos(); //鼠标相对于桌面左上角的位置,鼠标全局位置
    QPoint x =y-this->z;
    this->move(x);
}

void Assistant_1::mousePressEvent(QMouseEvent *event)
{
    QWidget::mousePressEvent(event);

    QPoint y =event->globalPos(); //鼠标相对于桌面左上角,鼠标全局位置
    QPoint x =this->geometry().topLeft();   //窗口左上角相对于桌面位置,窗口位置
    this-> z =y-x ;//定值不变
}

void Assistant_1::mouseReleaseEvent(QMouseEvent *event)
{
    QWidget::mouseReleaseEvent(event);
    this->z=QPoint();
}

//按钮美化
void Assistant_1::BeaBtn()
{
    //退出按钮
    connect(ui->exitBtn, &QPushButton::clicked,this, &Assistant_1::close);

    ui->exitBtn->setStyleSheet(
                         //正常状态样式
                         "QPushButton{"
                         "background-color:#ffffff;"//设置按钮背景色
                         "border-radius:35px;"//设置圆角半径
                         "}"
                         "QPushButton:hover{"
                                              "background-color:#999999;"//设置按钮点击时的背景颜色
                                              "}");
    //下一步
    ui->pushButton->setStyleSheet(
                         //正常状态样式
                         "QPushButton{"
                         "background-color:#B8C8D9;"//设置按钮背景色
                         "border-radius:20px;"//设置圆角半径
                         "color: #ffffff"
                         "}"
                         "QPushButton:hover{"
                                              "background-color:#999999;"//设置按钮点击时的背景颜色
                                              "}");

}


总结一

以上就是云曦日历的相关简介和部分代码,篇幅有限,大家可以直接在下方评论或私信我获取完整代码,希望能帮助到大家,感谢大家支持~( ̄▽ ̄~)~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。