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

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

时间:2023-02-03 19:36:24浏览次数:63  
标签:桌面 Qt color rgb QPushButton new 250 font 剪映

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

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


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

Qt实现 剪映 桌面端的界面效果_ide_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/6036007

相关文章

  • Matlab编译生成DLL,供QT调用
    QT5.15.2MatlabR2022a一、使用matlab生成dll准备好matlab接口命令行窗口敲入以下命令:  弹出以下对话框 选择LibraryCompiler弹出以下对话框  选择C......
  • 如何在电脑上安装 Windows 版桌面编辑器 v7.3
    ​​线上编辑器​​的桌面端版本不需要持续的互联网连接,还可在计算机上处理脱机文件。因此,如果您需要此类功能,可从我们的网站中下载并安装桌面编辑器。ONLYOFFICE桌面编辑器......
  • 如何将 ONLYOFFICE 桌面版编辑器v7.3安装到Red Hat、CentOS 及衍生产品上
    使用桌面版的ONLYOFFICE ​​在线编辑器​​,您可使用本地文件操作,无需保持互联网连接状态。ONLYOFFICE桌面编辑器最新版最近ONLYOFFICE发布了v7.3,最新版本的桌面编辑器提......
  • 如何从 snap 包安装ONLYOFFICE桌面版编辑器v7.3
    使用桌面版​​在线编辑器​​,无需保持互联网连接状态,也可处理您计算机上的离线文件。因此,如果您愿意,可以从我们的网站下载并安装桌面版编辑器,或者将带有它们代码库的链接添......
  • 强制去掉Qt的运行环境信息
    基于Qt6开发的应用程序会依赖libQt6Core.so.6,动态库so文件中包含有运行环境信息,包含有运行所需的linuxkernel最低版本,可通过objdump工具查看。在Docker环境中,glibc的版本......
  • Qt Creator9.0生成工程后没有.pro文件
    QtCreator9.0默认建立的widget项目只有CMakeLists.txt文件,没有pro文件发现生成工程文件时默认选择的是cmake,不是qmake导致的这个问题,将Builldsystem中转化成qmake之后......
  • 《ATK-DLRV1126Qt开发环境搭建》第一章 Ubuntu下安装Qt Creator​
    Ubuntu下安装QtCreator1.1安装Qt​进入下载页面(注意如果找不到下载链接,我们就进行这个顶层目录一个个目录找,因为Qt下载链接会变动),选择Linux的安装包下载。使用迅雷下载再拷......
  • 编译Qt Creator 工程
    //build1.下载QtCreator源码2.2.下载Qt库源码,下载地址http://download.qt.io/archive/qt/5.6/5.6.1/single/,下载qt-everywhere-opensource-src-5.6.1.zip。3.建立空......
  • 【嵌入式】微芯旺KungFu32A156MQT蜂鸣器演奏音乐
    #include"system_init.h"#include"kf32a156_gpio.h"intmain(){SystemInit(120);///<初始化系统时钟为120Msystick_delay_init(120);///<设置SysTick定时器......
  • Qt基础
    基本概念Qt是一个跨平台的C++应用程序开发框架;是标准C++的扩展,C++的语法在Qt中都是支持的。良好封装机制使得Qt的模块化程度非常高,可重用性较好,可以快速上手。Qt......