首页 > 其他分享 >Qt实现 剪映 桌面端的界面效果

Qt实现 剪映 桌面端的界面效果

时间:2023-02-06 11:04:53浏览次数:73  
标签:桌面 Qt color rgb QPushButton new 250 font 剪映


下方是个人实现的桌面端剪映效果,个人觉得自己实现的比较好看,原本的字体太小了

Qt实现 剪映 桌面端的界面效果_Qt


再上一张桌面端剪映原版界面

Qt实现 剪映 桌面端的界面效果_qt_02


原本的界面实现看起来确实字体偏小 不好看,因为发现原本也是Qt实现的,目测技术路线是QtQuick

接下来是个人的实现思路,
首先是重写Qt界面栏,然后利用弹窗进行布局,
接下来是重写控件部分

#include "images.h"


// 默认最多保存多少张图
#define MAX_IMAGE_SIZE 100

Images::Images(QObject*)
{
/**
* 设置Dll类型 后期优化的时候需要使用
*/
setProperty("dllType",MSG_DLL_IMAGES);
m_uiObject = nullptr;
Q_INIT_RESOURCE(images);
}

void Images::loadUI()
{
/**
* @brief: 添加测试按钮控件增加
*
*/
if (m_uiObject != nullptr)
{
QWidget* pMainWidget = dynamic_cast<QWidget*>(m_uiObject);

// 布局设置开始
m_pHboxLayout = new QHBoxLayout();
m_pHboxLayout->setSpacing(0);
m_pHboxLayout->setMargin(0);
QVBoxLayout* vBoxLayout = (QVBoxLayout*)pMainWidget->layout();
vBoxLayout->addLayout(m_pHboxLayout);
// 布局设置结束

m_pLocalBtn = QSharedPointer<DTButton>(new DTButton(nullptr),&QObject::deleteLater);
m_pLocalBtn->setText("本地草稿");
m_pLocalBtn->setIcon(QIcon(":/resources/folder.png"));
m_pLocalBtn->setStyleSheet("QPushButton {background-color: rgb(36, 36, 37); color:rgb(250, 250, 250); font: 12px; font-family:'Microsoft YaHei'; border-radius: 14px;}"
"QPushButton:hover {background-color: rgb(38, 38, 38);}"
"");
m_pLocalBtn->setFixedSize(QSize(180,40));
m_pLocalBtn->show();


m_pCloudBtn = QSharedPointer<DTButton>(new DTButton(nullptr),&QObject::deleteLater);
m_pCloudBtn->setText("我的云空间");
m_pCloudBtn->setIcon(QIcon(":/resources/cloud.png"));
m_pCloudBtn->setStyleSheet("QPushButton { padding-left: 12px; background-color: rgb(36, 36, 37); color:rgb(250, 250, 250); font: 12px; font-family:'Microsoft YaHei'; border-radius: 14px;}"
"QPushButton:hover {background-color: rgb(38, 38, 38);}"
"");
m_pCloudBtn->setFixedSize(QSize(180,40));
m_pCloudBtn->show();

m_pHotBtn = QSharedPointer<DTButton>(new DTButton(nullptr),&QObject::deleteLater);
m_pHotBtn->setText("热门活动");
m_pHotBtn->setIcon(QIcon(":/resources/hot.png"));
m_pHotBtn->setStyleSheet("QPushButton {background-color: rgb(36, 36, 37); color:rgb(250, 250, 250); font: 12px; font-family:'Microsoft YaHei'; border-radius: 14px;}"
"QPushButton:hover {background-color: rgb(38, 38, 38);}"
"");
m_pHotBtn->setFixedSize(QSize(180,40));
m_pHotBtn->show();

m_pSideBar = QSharedPointer<SideBarWidget>(new SideBarWidget(nullptr),&QObject::deleteLater);
m_pSideBar->setFixedWidth(250);


m_pAccountWidget = QSharedPointer<AccountWidget>(new AccountWidget(nullptr),&QObject::deleteLater);

m_pAccountWidget->setFixedSize(QSize(200,100));

QVBoxLayout * pVBoxLayout = (QVBoxLayout*)m_pSideBar->layout();
pVBoxLayout->addSpacerItem(new QSpacerItem(2,50,QSizePolicy::Fixed));
pVBoxLayout->addWidget(m_pAccountWidget.data(),0,Qt::AlignHCenter);
pVBoxLayout->addSpacerItem(new QSpacerItem(2,40,QSizePolicy::Fixed));
pVBoxLayout->addWidget(m_pLocalBtn.data(),0,Qt::AlignHCenter);
pVBoxLayout->addSpacerItem(new QSpacerItem(2,10,QSizePolicy::Fixed));
pVBoxLayout->addWidget(m_pCloudBtn.data(),0,Qt::AlignHCenter);
pVBoxLayout->addSpacerItem(new QSpacerItem(2,10,QSizePolicy::Fixed));
pVBoxLayout->addWidget(m_pHotBtn.data(),0,Qt::AlignHCenter);
pVBoxLayout->addStretch();

m_pHboxLayout->addWidget(m_pSideBar.data());

m_pHboxLayout->addStretch();
}

}

QVariant Images::slotHandleMessage(const PluginMetaData &plt)
{
// 同步消息处理
return QVariant("");
}

void Images::slotEventFromPlugins(const PluginMetaData& plt)
{
// 异步事件

m_uiObject = plt.qObject;
switch (plt.enumUiMsg) {
case E_UI_MSG_TYPE::MSG_UI_NONE:
break;
default:
break;
}
}
#include "widgets/account_widget.h"

#pragma execution_character_set("utf-8")

AccountWidget::AccountWidget(QWidget* pWidget): QWidget(pWidget)
{
m_pMainLayout = new QVBoxLayout();

m_pLoginLayout = new QHBoxLayout();
m_pInfoLayout = new QHBoxLayout();
this->setLayout(m_pMainLayout);

m_pLogoLabel = new QLabel();
m_pLoginButton = new QPushButton();
m_pInfoButton = new QPushButton();
init();
}

AccountWidget::~AccountWidget()
{

}

void AccountWidget::init()
{
this->setStyleSheet("QWidget { background-color:rgb(36, 36, 37); color:rgb(229, 229, 229); font-family:'Microsoft YaHei'; border-radius:8px; }");

m_pMainLayout->addLayout(m_pLoginLayout);
m_pMainLayout->addLayout(m_pInfoLayout);

m_pLogoLabel->setStyleSheet("QLabel{background-color: rgb(53, 53, 54); color: rgb(128, 128, 128); font: 12px;}");
m_pInfoButton->setStyleSheet("QPushButton{background-color: rgb(53, 53, 54); color: rgb(128, 128, 128); font:12px; font-weight:bold; border-radius: 5px;}");
m_pLoginButton->setStyleSheet("QPushButton{ font: 12px; font-weight:bold;}");
m_pInfoButton->setFixedHeight(30);

m_pInfoButton->setText("开通会员得 100GB 云空间");
m_pInfoButton->setFlat(true);

m_pLogoLabel->setPixmap(QPixmap(":/resources/login.png"));
m_pLoginButton->setText("点击登录账户");
m_pLoginButton->setIcon(QIcon(":/resources/login.png"));
m_pLoginButton->setFlat(true);

//m_pLoginLayout->addWidget(m_pLogoLabel);
m_pLoginLayout->addWidget(m_pLoginButton);
m_pInfoLayout->addWidget(m_pInfoButton);
// m_pLogoLabel->setPixmap();

}

完整实现​​源码地址​​​ : ​​https://github.com/huifeng-kooboo/DT​​​ 为了防止被墙,也可以访问国内​​码云地址​​: ​​https://gitee.com/huifeng_github/DT​​ 希望对大家的Qt学习产生一些借鉴的参考,写出更好看的界面。



标签:桌面,Qt,color,rgb,QPushButton,new,250,font,剪映
From: https://blog.51cto.com/u_15906863/6038740

相关文章

  • Apache Pulsar 桌面端图形化管理工具
    ApachePulsar桌面端图形化管理工具ApachePulsar是Apache软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分......
  • 第一天学习 剪映安装和基本功能使用
    第一,下载下载地址 https://www.capcut.cn/第二,剪映安装安装完毕后,开始创作导入视频第三,讲视频按住拖到时间抽位置  文章来自www.96net.com.cn......
  • C++QT/MFC图演示[2023-02-05]
    C++QT/MFC图演示[2023-02-05]22。图的实现与分析问题描述:分别对有向图、无向图、带权有向图、带权无向图实现对图的基本操作(创建、求顶点的度数、增加/删除边、判断边......
  • qtableview及自定义model的使用,对比qtablewidget性能及内存优化(转)
    以前一直使用qtableiwdget,最近有时间来研究下qtableview,才知道,qtableview和自定义model,比qtablewidget的性能啊,及占用内存啊,优化太多了。以前我使用qtablewidget是进行动态......
  • qt实现类似windows的屏幕保护(小球碰撞动画)
    最近看了篇文章啊,讲的就是让小球进行移动,可能别人做的是仿真啊,用到了太多的数学函数,什么运动学,各种的,我就想着,自己能不能使用qt实现下这种效果,就是有一个球不停的移动,当碰......
  • 解决VS2019编译Qt报错:C3615 constexpr 函数“qCountLeadingZeroBits”不能生成常量表
    这个是Qt的BUG,要解决编译报错的问题,需要修改Qt安装目录下的一个文件:Qt\Qt5.9.5\5.9.5\msvc2015\include\QtCore\qalgorithms.h建议修改之前先保存一个副本,另外要根据编译......
  • IDEA/WebStrom Deepin/UOS桌面图标创建
    IDEA[DesktopEntry]Categories=Developer;Comment=IntelliJIDEAExec=/home/xxx/app/idea-IU-221.5080.210/bin/idea.shIcon=/home/xxx/app/idea-IU-221.5080.210/b......
  • PyQt5按钮点击信号clicked报错
    提问: 我把python文件包移动到了e盘,然后编辑器connect就报黄色了。重装了pythonpyqt5编辑器,现在编辑器没有黄色,但是:本机QT信号不可调用。用之前写的代码运行不报错,现在......
  • ubuntu中Qt5中文输入法不起作用的解决方案
    在ubuntu上使用qtCreate5.9.6,遇上了中文输入法无法输入的情况,这怎么能行,得解决这一个问题,写代码没有中文注释,怎么能行?开始行动:1、安装输入法sudoapt-getinstallfcit......
  • Qt中QSqlQueryModel对应的表格进行自动排序功能
    Qt中使用了自己的机制来避免使用SQL语句,为我们提供了更简单的数据库操作及数据显示模型,分别是只读的QSqlQueryModel,操作单表的QSqlTableModel和以及可以支持外键的QSqlRela......