init sui
This commit is contained in:
parent
83e7580546
commit
92b79745ea
58
.gitignore
vendored
Normal file
58
.gitignore
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
# These are some examples of commonly ignored file patterns.
|
||||
# You should customize this list as applicable to your project.
|
||||
# Learn more about .gitignore:
|
||||
# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
|
||||
|
||||
# Node artifact files
|
||||
node_modules/
|
||||
dist/
|
||||
/build
|
||||
build/
|
||||
release/
|
||||
/release
|
||||
|
||||
# Compiled Java class files
|
||||
*.class
|
||||
|
||||
# Compiled Python bytecode
|
||||
*.py[cod]
|
||||
|
||||
# Log files
|
||||
*.log
|
||||
|
||||
# Package files
|
||||
*.jar
|
||||
|
||||
# Maven
|
||||
target/
|
||||
dist/
|
||||
|
||||
# JetBrains IDE
|
||||
.idea/
|
||||
|
||||
# Unit test reports
|
||||
TEST*.xml
|
||||
|
||||
# Generated by MacOS
|
||||
.DS_Store
|
||||
|
||||
# Generated by Windows
|
||||
Thumbs.db
|
||||
|
||||
# Applications
|
||||
*.app
|
||||
*.war
|
||||
|
||||
# Large media files
|
||||
*.mp4
|
||||
*.tiff
|
||||
*.avi
|
||||
*.flv
|
||||
*.mov
|
||||
*.wmv
|
||||
|
||||
#屏蔽zvo测试数据
|
||||
*.exe
|
||||
*.torrent
|
||||
*.m3u8
|
||||
|
7
.vscode/launch.json
vendored
Normal file
7
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
// 使用 IntelliSense 了解相关属性。
|
||||
// 悬停以查看现有属性的描述。
|
||||
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": []
|
||||
}
|
81
.vscode/settings.json
vendored
Normal file
81
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"qvboxlayout": "cpp",
|
||||
"iostream": "cpp",
|
||||
"qwindow": "cpp",
|
||||
"*.rh": "cpp",
|
||||
"qmainwindow": "cpp",
|
||||
"qpainter": "cpp",
|
||||
"qmouseevent": "cpp",
|
||||
"qpainterpath": "cpp",
|
||||
"new": "cpp",
|
||||
"array": "cpp",
|
||||
"atomic": "cpp",
|
||||
"bit": "cpp",
|
||||
"*.tcc": "cpp",
|
||||
"cctype": "cpp",
|
||||
"charconv": "cpp",
|
||||
"chrono": "cpp",
|
||||
"clocale": "cpp",
|
||||
"cmath": "cpp",
|
||||
"codecvt": "cpp",
|
||||
"compare": "cpp",
|
||||
"concepts": "cpp",
|
||||
"condition_variable": "cpp",
|
||||
"cstdarg": "cpp",
|
||||
"cstddef": "cpp",
|
||||
"cstdint": "cpp",
|
||||
"cstdio": "cpp",
|
||||
"cstdlib": "cpp",
|
||||
"cstring": "cpp",
|
||||
"ctime": "cpp",
|
||||
"cwchar": "cpp",
|
||||
"cwctype": "cpp",
|
||||
"deque": "cpp",
|
||||
"list": "cpp",
|
||||
"map": "cpp",
|
||||
"string": "cpp",
|
||||
"unordered_map": "cpp",
|
||||
"vector": "cpp",
|
||||
"exception": "cpp",
|
||||
"algorithm": "cpp",
|
||||
"functional": "cpp",
|
||||
"iterator": "cpp",
|
||||
"memory": "cpp",
|
||||
"memory_resource": "cpp",
|
||||
"numeric": "cpp",
|
||||
"optional": "cpp",
|
||||
"random": "cpp",
|
||||
"ratio": "cpp",
|
||||
"source_location": "cpp",
|
||||
"string_view": "cpp",
|
||||
"system_error": "cpp",
|
||||
"tuple": "cpp",
|
||||
"type_traits": "cpp",
|
||||
"utility": "cpp",
|
||||
"format": "cpp",
|
||||
"fstream": "cpp",
|
||||
"future": "cpp",
|
||||
"initializer_list": "cpp",
|
||||
"iomanip": "cpp",
|
||||
"iosfwd": "cpp",
|
||||
"istream": "cpp",
|
||||
"limits": "cpp",
|
||||
"mutex": "cpp",
|
||||
"numbers": "cpp",
|
||||
"ostream": "cpp",
|
||||
"semaphore": "cpp",
|
||||
"shared_mutex": "cpp",
|
||||
"span": "cpp",
|
||||
"sstream": "cpp",
|
||||
"stdexcept": "cpp",
|
||||
"stdfloat": "cpp",
|
||||
"stop_token": "cpp",
|
||||
"streambuf": "cpp",
|
||||
"text_encoding": "cpp",
|
||||
"thread": "cpp",
|
||||
"cinttypes": "cpp",
|
||||
"typeinfo": "cpp",
|
||||
"variant": "cpp"
|
||||
}
|
||||
}
|
103
CMakeLists.txt
Normal file
103
CMakeLists.txt
Normal file
@ -0,0 +1,103 @@
|
||||
#cmake最低版本
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
#项目版本
|
||||
project(SUI VERSION 1.0 LANGUAGES CXX)
|
||||
|
||||
#设置moc ui rcc编译开关
|
||||
SET(CMAKE_AUTOMOC ON)
|
||||
SET(CMAKE_AUTOUIC ON)
|
||||
SET(CMAKE_AUTORCC ON)
|
||||
|
||||
#设置C++版本
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
#包含所有.h文件
|
||||
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
|
||||
#release编译下依然输出符号和行号
|
||||
#ADD_DEFINITIONS(-DQT_MESSAGELOGCONTEXT)
|
||||
|
||||
#编译类型 debug和release输出路径
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
SET(CMAKE_CXX_FLAGS"-Wall -Wextra")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE"-O3 -s")
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
|
||||
message(STATUS "----------编译模式 START-------------")
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
message(STATUS "[CMAKE_BUILD_TYPE]当前值[Debug]")
|
||||
SET(CMAKE_BUILD_TYPE "Debug")
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/build/debug)
|
||||
else()
|
||||
message(STATUS "[CMAKE_BUILD_TYPE]当前值[Release]")
|
||||
SET(CMAKE_BUILD_TYPE "Release")
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/release)
|
||||
endif()
|
||||
message(STATUS "----------编译模式 END---------------")
|
||||
|
||||
#设置QT .cmake文件路径
|
||||
SET(QT_DIR "D:/Dev/Qt/6.3.2/mingw1120_static_x64_base/lib/cmake")
|
||||
SET(MSYS2 "D:/Dev/msys64/mingw64")
|
||||
|
||||
list(APPEND CMAKE_PREFIX_PATH ${QT_DIR} ${MSYS2})
|
||||
|
||||
#查找QT模块
|
||||
find_package(Qt6 REQUIRED Core Gui Widgets Network)
|
||||
|
||||
#输出路径
|
||||
message(STATUS "----------基础路径输出 START-------------")
|
||||
message(STATUS "QT_DIR_PATH=${QT_DIR}")
|
||||
message(STATUS "MSYS2_DIR_PATH=${MSYS2}")
|
||||
message(STATUS "----------基础路径输出 END---------------")
|
||||
|
||||
|
||||
FILE(GLOB src "${PROJECT_SOURCE_DIR}/src/*.cpp" "${PROJECT_SOURCE_DIR}/src/*.h")
|
||||
|
||||
set(PROJECT_SOURCES
|
||||
main.cpp
|
||||
${src}
|
||||
)
|
||||
|
||||
#资源文件
|
||||
qt6_add_resources(RCFILES suires.qrc)
|
||||
#WIN32
|
||||
add_executable(${PROJECT_NAME} WIN32 ${PROJECT_SOURCES} ${RCFILES} sui.rc)
|
||||
#增加winpthread和gcc_s静态库
|
||||
SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-Wl,-Bstatic -lwinpthread -Wl,-Bstatic -lz -Wl,-Bstatic -lgcc_s")
|
||||
#安全编译
|
||||
#关闭RPATH特性
|
||||
SET(CMAKE_SKIP_RPATH TRUE)
|
||||
#开启栈保护
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong")
|
||||
#开启GOT表保护
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro,-z,now")
|
||||
SET(CMAKE_EXECUTABLE_LINKER_FLAGS "${CMAKE_EXECUTABLE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
|
||||
#开启栈不可执行
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,noexecstack")
|
||||
SET(CMAKE_EXECUTABLE_LINKER_FLAGS "${CMAKE_EXECUTABLE_LINKER_FLAGS} -Wl,-z,noexecstack")
|
||||
#开启地址无关
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic")
|
||||
#随机化
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpie")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pie")
|
||||
SET(CMAKE_EXECUTABLE_LINKER_FLAGS "${CMAKE_EXECUTABLE_LINKER_FLAGS} -pie")
|
||||
#隐藏暴露的符号
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fvisibility=hidden")
|
||||
SET(CMAKE_EXECUTABLE_LINKER_FLAGS "${CMAKE_EXECUTABLE_LINKER_FLAGS} -fvisibility=hidden")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fvisibility-inlines-hidden")
|
||||
SET(CMAKE_EXECUTABLE_LINKER_FLAGS "${CMAKE_EXECUTABLE_LINKER_FLAGS} -fvisibility-inlines-hidden")
|
||||
#删除调试符号
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -s")
|
||||
SET(CMAKE_EXECUTABLE_LINKER_FLAGS "${CMAKE_EXECUTABLE_LINKER_FLAGS} -s")
|
||||
#开启整数溢出检查
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -ftrapv")
|
||||
#开启栈检查
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -fstack-check")
|
||||
|
||||
#忽略多重定引用
|
||||
target_link_options(${PROJECT_NAME} PUBLIC -Wl,--allow-multiple-definition)
|
||||
|
||||
target_link_libraries(
|
||||
${PROJECT_NAME} PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network
|
||||
)
|
9
main.cpp
Normal file
9
main.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
#include <QApplication>
|
||||
#include "src/sui.h"
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
sui _sui;
|
||||
_sui.show();
|
||||
return a.exec();
|
||||
}
|
BIN
res/font/HarmonyOS_Sans_SC_Black.ttf
Normal file
BIN
res/font/HarmonyOS_Sans_SC_Black.ttf
Normal file
Binary file not shown.
BIN
res/font/HarmonyOS_Sans_SC_Bold.ttf
Normal file
BIN
res/font/HarmonyOS_Sans_SC_Bold.ttf
Normal file
Binary file not shown.
BIN
res/font/HarmonyOS_Sans_SC_Light.ttf
Normal file
BIN
res/font/HarmonyOS_Sans_SC_Light.ttf
Normal file
Binary file not shown.
BIN
res/font/HarmonyOS_Sans_SC_Medium.ttf
Normal file
BIN
res/font/HarmonyOS_Sans_SC_Medium.ttf
Normal file
Binary file not shown.
BIN
res/font/HarmonyOS_Sans_SC_Regular.ttf
Normal file
BIN
res/font/HarmonyOS_Sans_SC_Regular.ttf
Normal file
Binary file not shown.
BIN
res/font/HarmonyOS_Sans_SC_Thin.ttf
Normal file
BIN
res/font/HarmonyOS_Sans_SC_Thin.ttf
Normal file
Binary file not shown.
BIN
res/font/PingFang Heavy.ttf
Normal file
BIN
res/font/PingFang Heavy.ttf
Normal file
Binary file not shown.
BIN
res/font/PingFang Medium.ttf
Normal file
BIN
res/font/PingFang Medium.ttf
Normal file
Binary file not shown.
BIN
res/img/btn/btn_close.png
Normal file
BIN
res/img/btn/btn_close.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.0 KiB |
BIN
res/img/btn/btn_max.png
Normal file
BIN
res/img/btn/btn_max.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
BIN
res/img/btn/btn_min.png
Normal file
BIN
res/img/btn/btn_min.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
BIN
res/img/btn/btn_restart_max.png
Normal file
BIN
res/img/btn/btn_restart_max.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
BIN
res/img/logo.ico
Normal file
BIN
res/img/logo.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 314 KiB |
BIN
res/img/logo.png
Normal file
BIN
res/img/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 157 KiB |
BIN
res/lang/qt_help_zh_CN.qm
Normal file
BIN
res/lang/qt_help_zh_CN.qm
Normal file
Binary file not shown.
419
res/qss/dark.qsst
Normal file
419
res/qss/dark.qsst
Normal file
@ -0,0 +1,419 @@
|
||||
/*Zvo播放器深色主题样式QSS文件*/
|
||||
$Button_Hover_BackGround_Color = ;
|
||||
$m_QWidget_BackGround_Color = #1b1b1b;
|
||||
|
||||
/*备份字体颜色#ff9000*/
|
||||
$m_QWidget_Font_Color = #F0F0F0F0;
|
||||
|
||||
QWidget{
|
||||
background-color: $m_QWidget_BackGround_Color;
|
||||
color:$m_QWidget_Font_Color;
|
||||
font:10pt;
|
||||
}
|
||||
|
||||
QPushButton#icoButton{
|
||||
image:url(:/res/img/zvo.png);
|
||||
border:none;
|
||||
}
|
||||
|
||||
QPushButton#t_backButton{
|
||||
image:url(:/res/img/dark/exit.png);
|
||||
border:none;
|
||||
}
|
||||
/*播放列表控件样式*/
|
||||
QPushButton#searchButton{
|
||||
image:url(:/res/img/dark/search.png);
|
||||
border:none;
|
||||
width:15px;
|
||||
height:15px;
|
||||
}
|
||||
QPushButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
/*播放器按钮-Pressed*/
|
||||
QPushButton:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
|
||||
QMenu {
|
||||
background-color : rgb(253,253,254);
|
||||
border-radius:15px;
|
||||
}
|
||||
QMenu::item {
|
||||
font-size:10pt;
|
||||
color: rgb(0,0,0);
|
||||
background-color:rgb(253,253,254);
|
||||
padding: 8px 25px 6px 10px;
|
||||
margin: 1px 1px;
|
||||
}
|
||||
QMenu::item:selected {
|
||||
background-color : rgb(236,236,237);
|
||||
}
|
||||
QMenu::icon:checked {
|
||||
background: rgb(253,253,254);
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
right: 1px;
|
||||
bottom: 1px;
|
||||
left: 1px;
|
||||
}
|
||||
QMenu::icon:checked:selected {
|
||||
background-color : rgb(236,236,237);
|
||||
background-image: url(:/space_selected.png);
|
||||
}
|
||||
QMenu::separator {
|
||||
height: 2px;
|
||||
background: rgb(235,235,236);
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
QPushButton#searchButton,#t_backButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
QPushButton#searchButton,#t_backButton:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
|
||||
QLineEdit#search_QLineEdit{
|
||||
background: $m_QWidget_BackGround_Color;
|
||||
color:$m_QWidget_Font_Color;
|
||||
border: 1px solid gray;
|
||||
border-radius: 2px;
|
||||
padding: 0 8px;
|
||||
selection-background-color: darkgray;
|
||||
}
|
||||
/*QComboBox样式*/
|
||||
QComboBox {
|
||||
height: 25px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid rgb(100, 100, 100);
|
||||
background: rgb(72, 72, 73);
|
||||
}
|
||||
QComboBox:enabled {
|
||||
color:$m_QWidget_Font_Color;
|
||||
}
|
||||
QComboBox:!enabled {
|
||||
color: rgb(155, 155, 155);
|
||||
}
|
||||
QComboBox:enabled:hover, QComboBox:enabled:focus {
|
||||
color: rgb(230, 230, 230);
|
||||
background: rgb(68, 69, 73);
|
||||
}
|
||||
QComboBox::drop-down {
|
||||
width: 20px;
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
QComboBox::drop-down:hover {
|
||||
background: rgba(255, 255, 255, 30);
|
||||
}
|
||||
|
||||
QComboBox::down-arrow:on {
|
||||
top: 1px;
|
||||
}
|
||||
QComboBox QAbstractItemView {
|
||||
border: 1px solid rgb(100, 100, 100);
|
||||
background: rgb(68, 69, 73);
|
||||
outline: none;
|
||||
}
|
||||
QComboBox QAbstractItemView::item {
|
||||
height: 25px;
|
||||
color: rgb(175, 175, 175);
|
||||
}
|
||||
QComboBox QAbstractItemView::item:selected {
|
||||
background: rgba(255, 255, 255, 40);
|
||||
color: rgb(230, 230, 230);
|
||||
}
|
||||
|
||||
/*QTabWidget样式*/
|
||||
QTabWidget{
|
||||
background-color:transparent;
|
||||
}
|
||||
|
||||
QTabWidget::pane{
|
||||
border:2px;
|
||||
}
|
||||
|
||||
QTabWidget::tab-bar{
|
||||
border:2px;
|
||||
alignment:left;
|
||||
}
|
||||
|
||||
QTabBar::tab{
|
||||
border: 1px solid gray;
|
||||
border-radius: 5px;
|
||||
border:2px;
|
||||
background:$m_QWidget_BackGround_Color;
|
||||
color:$m_QWidget_Font_Color;
|
||||
min-width:20ex;
|
||||
min-height:6ex;
|
||||
}
|
||||
|
||||
QTabBar::tab:hover{
|
||||
background:#006161;
|
||||
color:$m_QWidget_Font_Color = #F0F0F0F0;
|
||||
}
|
||||
|
||||
QTabBar::tab:selected{
|
||||
border-color: black;
|
||||
background:#9fa493;
|
||||
color:$m_QWidget_Font_Color;
|
||||
}
|
||||
|
||||
/*QTableView样式*/
|
||||
QTableView
|
||||
{
|
||||
background: rgb(55,55,55);
|
||||
}
|
||||
|
||||
QTableView{
|
||||
selection-background-color:rgb(255,0,0);
|
||||
background-color:rgb(50,50,50);
|
||||
border:1px solid rgb(70,70,70);
|
||||
color:rgb(200,200,200)
|
||||
}
|
||||
|
||||
QTableView::item
|
||||
{
|
||||
background-color:$m_QWidget_BackGround_Color;
|
||||
border:1px solid rgb(65,65,65);
|
||||
color:$m_QWidget_Font_Color;
|
||||
}
|
||||
QTableView::item:hover
|
||||
{
|
||||
background-color: rgb(30,30,30);
|
||||
color:rgb(31,163,246);
|
||||
}
|
||||
QTableView::item::selected
|
||||
{
|
||||
background-color: rgb(30,30,30);
|
||||
color:rgb(31,163,246);
|
||||
}
|
||||
QHeaderView::section{
|
||||
background-color:rgb(90,90,90);
|
||||
color:rgb(200,200,200);
|
||||
border:1px solid rgb(60,60,60);
|
||||
border-bottom:1px solid rgb(70,70,70);
|
||||
}
|
||||
QHeaderView::section:hover
|
||||
{
|
||||
background-color:rgb(80,80,80);
|
||||
}
|
||||
/*滚动条样式*/
|
||||
QScrollBar:vertical{
|
||||
border: none;
|
||||
background-color:$m_QWidget_BackGround_Color;
|
||||
width:10px;
|
||||
}
|
||||
QScrollBar::handle:vertical{
|
||||
background:#9fa480;
|
||||
border-radius:4px;
|
||||
}
|
||||
QScrollBar::handle:vertical:hover{
|
||||
background:#9fa493;
|
||||
}
|
||||
QScrollBar::add-line:vertical{
|
||||
border: none;
|
||||
height: 0px;
|
||||
}
|
||||
QScrollBar::sub-line:vertical{
|
||||
border: none;
|
||||
height: 0px;
|
||||
}
|
||||
QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical
|
||||
{
|
||||
background:$m_QWidget_BackGround_Color;
|
||||
border-radius:3px;
|
||||
}
|
||||
/*播放进度条*/
|
||||
QSlider::groove:horizontal {
|
||||
border: 0px solid #bbb;
|
||||
}
|
||||
|
||||
QSlider::sub-page:horizontal {
|
||||
background: rgb(235,97,0);
|
||||
border-radius: 0px;
|
||||
margin-top:8px;
|
||||
margin-bottom:8px;
|
||||
}
|
||||
|
||||
QSlider::add-page:horizontal {
|
||||
background: rgb(255,255, 255);
|
||||
border: 0px solid #777;
|
||||
border-radius: 2px;
|
||||
margin-top:8px;
|
||||
margin-bottom:8px;
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal {
|
||||
background: rgb(255,153,102);
|
||||
border: 1px solid rgb(255,153,102);
|
||||
width: 14px;
|
||||
height:10px;
|
||||
border-radius: 7px;
|
||||
margin-top:2px;
|
||||
margin-bottom:2px;
|
||||
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal:hover {
|
||||
background: rgb(255,128,6);
|
||||
border: 1px solid rgba(102,102,102,102);
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
QSlider::sub-page:horizontal:disabled {
|
||||
background: #bbb;
|
||||
border-color: #999;
|
||||
}
|
||||
|
||||
QSlider::add-page:horizontal:disabled {
|
||||
background: #eee;
|
||||
border-color: #999;
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal:disabled {
|
||||
background: #eee;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
|
||||
/*------------------标题栏样式 最小化 最大化 关闭---------------------*/
|
||||
/*标题栏变量参数值定义*/
|
||||
$titleBar_QWidget_BackGround_Color = #ffffff; /*标题栏背景*/
|
||||
QWidget#mediaTitle{
|
||||
background-color: $titleBar_QWidget_BackGround_Color;
|
||||
margin-top:1px;
|
||||
margin-right:1px;
|
||||
margin-bottom:1px;
|
||||
margin-left:1px;
|
||||
}
|
||||
QPushButton#minimizeButton{
|
||||
image:url(":/res/img/btn/btn_min.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
QPushButton#maximizeButton{
|
||||
image:url(":/res/img/btn/btn_max.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
QPushButton#closeButton{
|
||||
image:url(":/res/img/btn/btn_close.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
/*----------------------鼠标移动到按钮上---------------------------*/
|
||||
QPushButton#minimizeButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
QPushButton#maximizeButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
QPushButton#closeButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
/*----------------------鼠标按下到按钮上---------------------------*/
|
||||
QPushButton#minimizeButton:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
QPushButton#maximizeButton:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
QPushButton#closeButton:pressed{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
/*------------------播放器面板样式---------------------*/
|
||||
/*播放器面板变量参数值定义*/
|
||||
$m_MediaPlayer_Slider_QWidget_Color = #c7fdff;
|
||||
$b_max_size = 25px;
|
||||
QWidget#m_MediaPlayerSliderQWidget{
|
||||
background-color: $m_QWidget_BackGround_Color;
|
||||
}
|
||||
QWidget#m_videoWidget{
|
||||
background-color:$m_QWidget_BackGround_Color;
|
||||
background-image:url(:/res/img/zvo.png);
|
||||
background-position:center;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
/*播放器按钮-默认*/
|
||||
QPushButton#m_btnvolume{
|
||||
image:url(":/res/img/dark/volume_open.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnPlay{
|
||||
image:url(":/res/img/dark/play.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnClose{
|
||||
image:url(":/res/img/dark/close.png");
|
||||
border:none;
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnStop{
|
||||
image:url(":/res/img/dark/stop.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnPrev{
|
||||
image:url(":/res/img/dark/prev.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnNext{
|
||||
image:url(":/res/img/dark/next.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnEq{
|
||||
image:url(":/res/img/dark/equalizer.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnSet{
|
||||
image:url(":/res/img/dark/setting.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnMenuOpt{
|
||||
image:url(":/res/img/dark/menu.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnDown{
|
||||
image:url(":/res/img/dark/download.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
/*播放器按钮-Hover*/
|
||||
QPushButton#m_btnvolume:hover{
|
||||
background: $Button_Hover_BackGround_Color;
|
||||
}
|
82
res/qss/dark_style.qss
Normal file
82
res/qss/dark_style.qss
Normal file
@ -0,0 +1,82 @@
|
||||
QWidget{
|
||||
background-color: #1b1b1b;
|
||||
color:#F0F0F0F0;
|
||||
font:10pt;
|
||||
}
|
||||
|
||||
QWidget#m_widget{
|
||||
border-radius:10px;
|
||||
}
|
||||
|
||||
QPushButton{
|
||||
margin-right:3px;
|
||||
margin-bottom:0px;
|
||||
border-radius:8px;
|
||||
font-family: "Microsoft YaHei";
|
||||
font-weight: bold;
|
||||
font: bold 12px;
|
||||
}
|
||||
|
||||
QPushButton#ico_button{
|
||||
image:url(:/res/img/logo.png);
|
||||
border:none;
|
||||
}
|
||||
|
||||
QPushButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
/*------------------标题栏样式 最小化 最大化 关闭---------------------*/
|
||||
/*标题栏变量参数值定义*/
|
||||
/*标题栏背景*/
|
||||
QWidget#sui_title{
|
||||
background-color: #ffffff;
|
||||
margin-top:1px;
|
||||
margin-right:1px;
|
||||
margin-bottom:1px;
|
||||
margin-left:1px;
|
||||
}
|
||||
QPushButton#min_button{
|
||||
image:url(":/res/img/btn/btn_min.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
QPushButton#max_button{
|
||||
image:url(":/res/img/btn/btn_max.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
QPushButton#close_button{
|
||||
image:url(":/res/img/btn/btn_close.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
|
||||
QPushButton#min_button:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
QPushButton#max_button:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
QPushButton#close_button:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
|
||||
QPushButton#min_button:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
QPushButton#max_button:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
QPushButton#close_button:pressed{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
462
res/qss/light.qsst
Normal file
462
res/qss/light.qsst
Normal file
@ -0,0 +1,462 @@
|
||||
/*Zvo播放器深色主题样式QSS文件*/
|
||||
$Button_Hover_BackGround_Color = #ffffff;
|
||||
$m_QWidget_BackGround_Color = #F3F3F3;
|
||||
$m_QWidget_Font_Color = #2F4F4F;
|
||||
|
||||
QWidget{
|
||||
background-color: $m_QWidget_BackGround_Color;
|
||||
color:$m_QWidget_Font_Color;
|
||||
}
|
||||
QWidget#m_QWidget{
|
||||
border-radius:10px;
|
||||
}
|
||||
|
||||
QToolButton{
|
||||
margin-right:3px;
|
||||
margin-bottom:0px;
|
||||
border-radius:8px;
|
||||
font-family: "Microsoft YaHei";
|
||||
font-weight: bold;
|
||||
font: bold 12px;
|
||||
}
|
||||
QPushButton{
|
||||
margin-right:3px;
|
||||
margin-bottom:0px;
|
||||
border-radius:8px;
|
||||
font-family: "Microsoft YaHei";
|
||||
font-weight: bold;
|
||||
font: bold 12px;
|
||||
}
|
||||
|
||||
QPushButton#icoButton{
|
||||
image:url(:/res/img/zvo.png);
|
||||
border:none;
|
||||
}
|
||||
|
||||
QPushButton#t_backButton{
|
||||
image:url(:/res/img/light/exit.png);
|
||||
border:none;
|
||||
}
|
||||
/*播放列表控件样式*/
|
||||
QPushButton#searchButton{
|
||||
image:url(:/res/img/light/search.png);
|
||||
border:none;
|
||||
width:15px;
|
||||
height:15px;
|
||||
}
|
||||
QPushButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
/*播放器按钮-Pressed*/
|
||||
QPushButton:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
|
||||
QMenu {
|
||||
background-color : rgb(253,253,254);
|
||||
border-radius:15px;
|
||||
}
|
||||
QMenu::item {
|
||||
font-size:10pt;
|
||||
color: rgb(0,0,0);
|
||||
background-color:rgb(253,253,254);
|
||||
padding: 8px 25px 6px 10px;
|
||||
margin: 1px 1px;
|
||||
}
|
||||
QMenu::item:selected {
|
||||
background-color : rgb(236,236,237);
|
||||
}
|
||||
QMenu::icon:checked {
|
||||
background: rgb(253,253,254);
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
right: 1px;
|
||||
bottom: 1px;
|
||||
left: 1px;
|
||||
}
|
||||
QMenu::icon:checked:selected {
|
||||
background-color : rgb(236,236,237);
|
||||
background-image: url(:/space_selected.png);
|
||||
}
|
||||
QMenu::separator {
|
||||
height: 2px;
|
||||
background: rgb(235,235,236);
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
QPushButton#searchButton,#t_backButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
QPushButton#searchButton,#t_backButton:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
|
||||
QLineEdit#search_QLineEdit{
|
||||
background: $m_QWidget_BackGround_Color;
|
||||
color:$m_QWidget_Font_Color;
|
||||
border: 1px solid gray;
|
||||
border-radius: 2px;
|
||||
padding: 0 8px;
|
||||
selection-background-color: darkgray;
|
||||
}
|
||||
|
||||
/*QComboBox样式*/
|
||||
QComboBox {
|
||||
height: 25px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid rgb(100, 100, 100);
|
||||
background: #f3f3f3;
|
||||
}
|
||||
QComboBox:enabled {
|
||||
color:#2f4f4f;
|
||||
}
|
||||
QComboBox:!enabled {
|
||||
color: rgb(155, 155, 155);
|
||||
}
|
||||
|
||||
QComboBox::drop-down {
|
||||
width: 20px;
|
||||
border: none;
|
||||
}
|
||||
QComboBox::drop-down:hover {
|
||||
color:$Button_Hover_BackGround_Color;
|
||||
}
|
||||
|
||||
QComboBox::down-arrow:on {
|
||||
top: 1px;
|
||||
}
|
||||
QComboBox QAbstractItemView {
|
||||
border: 1px solid rgb(100, 100, 100);
|
||||
background: #f3f3f3;
|
||||
outline: none;
|
||||
}
|
||||
QComboBox QAbstractItemView::item {
|
||||
height: 25px;
|
||||
color: $m_QWidget_Font_Color;
|
||||
}
|
||||
QComboBox QAbstractItemView::item:selected {
|
||||
color:$Button_Hover_BackGround_Color;
|
||||
background:rgb(0,120,215);
|
||||
}
|
||||
QComboBox QAbstractItemView::item:hover {
|
||||
color:$Button_Hover_BackGround_Color;
|
||||
background:rgb(0,120,215);
|
||||
}
|
||||
/*QTabWidget样式*/
|
||||
QTabWidget{
|
||||
background-color:transparent;
|
||||
}
|
||||
|
||||
QTabWidget::pane{
|
||||
border:0px;
|
||||
}
|
||||
|
||||
QTabWidget::tab-bar{
|
||||
alignment: center;
|
||||
border:1px rgb(255,255,255);
|
||||
}
|
||||
/*通用QTabBar样式*/
|
||||
QTabBar::tab{
|
||||
/*border: 1px solid gray;*/
|
||||
border-radius: 3px;
|
||||
color:$m_QWidget_Font_Color;
|
||||
min-width:25ex;
|
||||
min-height:8ex;
|
||||
}
|
||||
|
||||
QTabBar::tab:hover{
|
||||
background:rgb(0,120,215);
|
||||
color:$Button_Hover_BackGround_Color;
|
||||
}
|
||||
|
||||
QTabBar::tab:selected{
|
||||
border-color: $m_QWidget_BackGround_Color;
|
||||
background:rgb(0,120,215);
|
||||
color:$Button_Hover_BackGround_Color;
|
||||
}
|
||||
|
||||
/*标题栏QTabBar样式*/
|
||||
QTabBar#MediaTitleBar::tab{
|
||||
border-bottom: 0px;
|
||||
border-radius: 3px;
|
||||
color:$m_QWidget_Font_Color;
|
||||
min-width:50ex;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
QTabBar#MediaTitleBar::tab:hover{
|
||||
background:rgb(214,214,214);
|
||||
color:$m_QWidget_Font_Color;
|
||||
}
|
||||
|
||||
QTabBar#MediaTitleBar::tab:selected{
|
||||
border-color: $m_QWidget_BackGround_Color;
|
||||
background:rgb(214,214,214);
|
||||
color:$m_QWidget_Font_Color;
|
||||
}
|
||||
|
||||
QTabBar#MediaTitleBar::close-button{
|
||||
min-width:30px;
|
||||
min-height:30px;
|
||||
subcontrol-origin: padding;
|
||||
subcontrol-position: bottom right;
|
||||
border-image: url(:/res/img/light/close_little.png);
|
||||
}
|
||||
QTabBar#MediaTitleBar::close-button:hover{
|
||||
background: rgb(192,192,192);
|
||||
}
|
||||
|
||||
/*QTableView样式*/
|
||||
QTableView{
|
||||
selection-background-color:rgb(255,0,0);
|
||||
background:$m_QWidget_BackGround_Color;
|
||||
border:1px rgb(255,255,255);
|
||||
color:rgb(200,200,200)
|
||||
}
|
||||
|
||||
QTableView::item
|
||||
{
|
||||
background-color:$m_QWidget_BackGround_Color;
|
||||
border:1px solid #2f4f4f;
|
||||
color:$m_QWidget_Font_Color;
|
||||
}
|
||||
QTableView::item:hover
|
||||
{
|
||||
color:$Button_Hover_BackGround_Color;
|
||||
background:rgb(0,120,215);
|
||||
}
|
||||
QTableView::item::selected
|
||||
{
|
||||
color:$Button_Hover_BackGround_Color;
|
||||
background:rgb(0,120,215);
|
||||
outline:0px;
|
||||
}
|
||||
QHeaderView::section{
|
||||
color:#2f4f4f;
|
||||
background:#f3f3f3;
|
||||
border:1px solid #2f4f4f;
|
||||
border-bottom:1px solid #f3f3f3;
|
||||
}
|
||||
QHeaderView::section:hover
|
||||
{
|
||||
color:$Button_Hover_BackGround_Color;
|
||||
background:rgb(0,120,215);
|
||||
}
|
||||
/*滚动条样式*/
|
||||
QScrollBar:vertical{
|
||||
border: none;
|
||||
background-color:$m_QWidget_BackGround_Color;
|
||||
width:10px;
|
||||
}
|
||||
QScrollBar::handle:vertical{
|
||||
background:rgb(0,120,215);
|
||||
border-radius:4px;
|
||||
}
|
||||
QScrollBar::handle:vertical:hover{
|
||||
background:rgb(0,120,215);
|
||||
}
|
||||
QScrollBar::handle:vertical{
|
||||
background:rgb(0,120,215);
|
||||
border-radius:4px;
|
||||
}
|
||||
QScrollBar::handle:vertical:hover{
|
||||
background:rgb(0,120,255);;
|
||||
}
|
||||
|
||||
QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical
|
||||
{
|
||||
background:$m_QWidget_BackGround_Color;
|
||||
border-radius:3px;
|
||||
}
|
||||
/*播放进度条*/
|
||||
QSlider::groove:horizontal {
|
||||
border: 0px solid #bbb;
|
||||
}
|
||||
|
||||
QSlider::sub-page:horizontal {
|
||||
background: rgb(235,97,0);
|
||||
border-radius: 3px;
|
||||
margin-top:8px;
|
||||
margin-bottom:8px;
|
||||
}
|
||||
|
||||
QSlider::add-page:horizontal {
|
||||
background: rgb(255,255, 255);
|
||||
border: 0px solid #777;
|
||||
border-radius: 2px;
|
||||
margin-top:8px;
|
||||
margin-bottom:8px;
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal {
|
||||
background: rgb(255,153,102);
|
||||
border: 1px solid rgb(255,153,102);
|
||||
width: 14px;
|
||||
height:10px;
|
||||
border-radius: 8px;
|
||||
margin-top:3px;
|
||||
margin-bottom:3px;
|
||||
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal:hover {
|
||||
background: rgb(255,128,6);
|
||||
border: 1px solid rgba(102,102,102,102);
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
QSlider::sub-page:horizontal:disabled {
|
||||
background: #bbb;
|
||||
border-color: #999;
|
||||
}
|
||||
|
||||
QSlider::add-page:horizontal:disabled {
|
||||
background: #eee;
|
||||
border-color: #999;
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal:disabled {
|
||||
background: #eee;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
|
||||
/*------------------标题栏样式 最小化 最大化 关闭---------------------*/
|
||||
/*标题栏变量参数值定义*/
|
||||
$titleBar_QWidget_BackGround_Color = #ffffff; /*标题栏背景*/
|
||||
QWidget#mediaTitle{
|
||||
background-color: $titleBar_QWidget_BackGround_Color;
|
||||
margin-top:1px;
|
||||
margin-right:1px;
|
||||
margin-bottom:1px;
|
||||
margin-left:1px;
|
||||
}
|
||||
QPushButton#minimizeButton{
|
||||
image:url(":/res/img/btn/btn_min.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
QPushButton#maximizeButton{
|
||||
image:url(":/res/img/btn/btn_max.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
QPushButton#closeButton{
|
||||
image:url(":/res/img/btn/btn_close.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
/*----------------------鼠标移动到按钮上---------------------------*/
|
||||
QPushButton#minimizeButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
QPushButton#maximizeButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
QPushButton#closeButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
/*----------------------鼠标按下到按钮上---------------------------*/
|
||||
QPushButton#minimizeButton:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
QPushButton#maximizeButton:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
QPushButton#closeButton:pressed{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
/*------------------播放器面板样式---------------------*/
|
||||
/*播放器面板变量参数值定义*/
|
||||
$m_MediaPlayer_Slider_QWidget_Color = #c7fdff;
|
||||
$b_max_size = 25px;
|
||||
QWidget#m_MediaPlayerSliderQWidget{
|
||||
background-color: $m_QWidget_BackGround_Color;
|
||||
}
|
||||
QWidget#m_videoWidget{
|
||||
background-color:$m_QWidget_BackGround_Color;
|
||||
background-image:url(:/res/img/zvo.png);
|
||||
background-position:center;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
/*播放器按钮-默认*/
|
||||
QPushButton#m_btnvolume{
|
||||
image:url(":/res/img/light/volume_open.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnPlay{
|
||||
image:url(":/res/img/light/play.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnClose{
|
||||
image:url(":/res/img/light/close.png");
|
||||
border:none;
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnStop{
|
||||
image:url(":/res/img/light/stop.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnPrev{
|
||||
image:url(":/res/img/light/prev.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnNext{
|
||||
image:url(":/res/img/light/next.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnEq{
|
||||
image:url(":/res/img/light/equalizer.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnSet{
|
||||
image:url(":/res/img/light/setting.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnMenuOpt{
|
||||
image:url(":/res/img/light/menu.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
QPushButton#m_btnDown{
|
||||
image:url(":/res/img/light/download.png");
|
||||
border:none;
|
||||
max-width:$b_max_size;
|
||||
max-height:$b_max_size;
|
||||
}
|
||||
/*播放器按钮-Hover*/
|
||||
QPushButton#m_btnvolume:hover{
|
||||
background: $Button_Hover_BackGround_Color;
|
||||
}
|
80
res/qss/light_style.qss
Normal file
80
res/qss/light_style.qss
Normal file
@ -0,0 +1,80 @@
|
||||
QWidget{
|
||||
background-color: #F3F3F3;
|
||||
color:#2F4F4F;
|
||||
}
|
||||
QWidget#m_widget{
|
||||
border-radius:10px;
|
||||
}
|
||||
|
||||
QPushButton{
|
||||
margin-right:3px;
|
||||
margin-bottom:0px;
|
||||
border-radius:8px;
|
||||
font-family: "Microsoft YaHei";
|
||||
font-weight: bold;
|
||||
font: bold 12px;
|
||||
}
|
||||
|
||||
QPushButton#ico_button{
|
||||
image:url(:/res/img/logo.png);
|
||||
border:none;
|
||||
}
|
||||
|
||||
QPushButton:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
/*------------------标题栏样式 最小化 最大化 关闭---------------------*/
|
||||
/*标题栏变量参数值定义*/
|
||||
/*标题栏背景*/
|
||||
QWidget#sui_title{
|
||||
background-color: #ffffff;
|
||||
margin-top:1px;
|
||||
margin-right:1px;
|
||||
margin-bottom:1px;
|
||||
margin-left:1px;
|
||||
}
|
||||
QPushButton#min_button{
|
||||
image:url(":/res/img/btn/btn_min.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
QPushButton#max_button{
|
||||
image:url(":/res/img/btn/btn_max.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
QPushButton#close_button{
|
||||
image:url(":/res/img/btn/btn_close.png");
|
||||
border:none;
|
||||
width:20px;
|
||||
height:20px;
|
||||
}
|
||||
|
||||
QPushButton#min_button:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
QPushButton#max_button:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
QPushButton#close_button:hover{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
||||
|
||||
QPushButton#min_button:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
QPushButton#max_button:pressed{
|
||||
padding-left:2px;
|
||||
padding-top:2px;
|
||||
}
|
||||
QPushButton#close_button:pressed{
|
||||
padding-left:1px;
|
||||
padding-top:1px;
|
||||
}
|
17
res/txt/about.txt
Normal file
17
res/txt/about.txt
Normal file
@ -0,0 +1,17 @@
|
||||
关于本软件
|
||||
软件名:Zvo(Zero Vague Oder)
|
||||
一款集成视频播放,摄像头播放,P2P下载的软件
|
||||
开发者 能力一般 水平有限 代码拉胯
|
||||
编译环境:
|
||||
QT static build
|
||||
curl
|
||||
qbittorrent
|
||||
aria2
|
||||
libvlc
|
||||
libgit2
|
||||
libtorrent
|
||||
作者:JackLee_CN
|
||||
联系Mail:809262979@qq.com
|
||||
开原地址:https://jihulab.com/vk/zvo.git
|
||||
|
||||
作者申明:本软件仅供学习使用,软件自带的数据均属于软件开发测试使用,由于开发过程中方便测试所以开源源码部分数据写死,如不喜欢可以自行修改增删减
|
55
src/common.h
Normal file
55
src/common.h
Normal file
@ -0,0 +1,55 @@
|
||||
#ifndef COMMON_H
|
||||
#define COMMON_H
|
||||
#define UNUSED(x) (void)(x)
|
||||
#define GIT_UNUSED(x) ((void)(x))
|
||||
#define FILE_PATH_LEN 128
|
||||
#define toStr(name) (#name)
|
||||
#ifdef __unix
|
||||
#define fopen_s(pFile,filename,mode) ((*(pFile))=fopen((filename), (mode)))==NULL
|
||||
#endif
|
||||
|
||||
#include <iostream>
|
||||
//#################QT head###############//
|
||||
#include <QtGui>
|
||||
#include <QPushButton>
|
||||
#include <QDialog>
|
||||
#include <QThread>
|
||||
#include <QProcess>
|
||||
#include <QWidget>
|
||||
#include <QMessageBox>
|
||||
#include <QFileDialog>
|
||||
#include <QFileInfo>
|
||||
#include <QFileIconProvider>
|
||||
#include <QDateTime>
|
||||
#include <QDebug>
|
||||
#include <QString>
|
||||
#include <QAbstractListModel>
|
||||
#include <QFile>
|
||||
#include <QIcon>
|
||||
#include <QDir>
|
||||
#include <QListView>
|
||||
#include <QAction>
|
||||
#include <QMenu>
|
||||
#include <QPainter>
|
||||
#include <QContextMenuEvent>
|
||||
#include <QInputDialog>
|
||||
#include <QTabWidget>
|
||||
#include <QThread>
|
||||
#include <QProgressBar>
|
||||
#include <QDesktopServices>
|
||||
#include <QApplication>
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
//###################C++ head################//
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/file.h>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <zlib.h>
|
||||
#include <string.h>
|
||||
#include <winuser.h>
|
||||
#endif // COMMON_H
|
123
src/sui.cpp
Normal file
123
src/sui.cpp
Normal file
@ -0,0 +1,123 @@
|
||||
#include "sui.h"
|
||||
sui::sui(QWidget *parent)
|
||||
: QWidget(parent),
|
||||
m_widget(new QWidget),
|
||||
m_layout(new QVBoxLayout),
|
||||
m_press(false),
|
||||
m_border_width(5)
|
||||
{
|
||||
init_layout();
|
||||
}
|
||||
sui::~sui()
|
||||
{
|
||||
}
|
||||
void sui::init_layout()
|
||||
{
|
||||
m_title=new sui_title(this);
|
||||
m_main_qwidget=new QWidget(m_title);
|
||||
setObjectName(tr("m_widget"));
|
||||
m_layout->addWidget(m_title);
|
||||
m_title->setMouseTracking(true);
|
||||
m_layout->addWidget(m_main_qwidget);
|
||||
m_layout->setContentsMargins(5, 5, 5, 5);
|
||||
m_layout->setSpacing(0);
|
||||
setWindowFlags(Qt::FramelessWindowHint);
|
||||
setAttribute(Qt::WA_TranslucentBackground);
|
||||
setMouseTracking(true);
|
||||
setBaseSize(1000, 600);
|
||||
resize(1000, 600);
|
||||
setLayout(m_layout);
|
||||
}
|
||||
|
||||
void sui::showEvent(QShowEvent *event)
|
||||
{
|
||||
this->setAttribute(Qt::WA_Mapped);
|
||||
QWidget::showEvent(event);
|
||||
}
|
||||
|
||||
void sui::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
QStyleOption opt;
|
||||
opt.initFrom(this);
|
||||
QPainter painter(this);
|
||||
style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
|
||||
painter.setRenderHint(QPainter::Antialiasing);
|
||||
painter.drawRoundedRect(this->rect(), 10, 10);
|
||||
QWidget::paintEvent(event);
|
||||
}
|
||||
|
||||
void sui::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
if ((event->button() == Qt::LeftButton))
|
||||
{
|
||||
m_press = true;
|
||||
m_point = (event->globalPosition() - this->pos()).toPoint();
|
||||
event->accept();
|
||||
}
|
||||
}
|
||||
|
||||
void sui::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
if (m_press)
|
||||
{
|
||||
move(event->globalPosition().toPoint() - m_point);
|
||||
event->accept();
|
||||
}
|
||||
}
|
||||
|
||||
void sui::mouseReleaseEvent(QMouseEvent *event)
|
||||
{
|
||||
Q_UNUSED(event)
|
||||
m_press = false;
|
||||
}
|
||||
|
||||
bool sui::nativeEvent(const QByteArray &eventType, void *message, qintptr *result)
|
||||
{
|
||||
Q_UNUSED(eventType)
|
||||
|
||||
MSG *param = static_cast<MSG *>(message);
|
||||
|
||||
switch (param->message)
|
||||
{
|
||||
case WM_NCHITTEST:
|
||||
{
|
||||
int nX = GET_X_LPARAM(param->lParam) - this->geometry().x();
|
||||
int nY = GET_Y_LPARAM(param->lParam) - this->geometry().y();
|
||||
|
||||
// 如果鼠标位于子控件上,则不进行处理
|
||||
if (childAt(nX, nY) != nullptr)
|
||||
return QWidget::nativeEvent(eventType, message, result);
|
||||
|
||||
*result = HTCAPTION;
|
||||
|
||||
// 鼠标区域位于窗体边框,进行缩放
|
||||
if ((nX > 0) && (nX < m_border_width))
|
||||
*result = HTLEFT;
|
||||
|
||||
if ((nX > this->width() - m_border_width) && (nX < this->width()))
|
||||
*result = HTRIGHT;
|
||||
|
||||
if ((nY > 0) && (nY < m_border_width))
|
||||
*result = HTTOP;
|
||||
|
||||
if ((nY > this->height() - m_border_width) && (nY < this->height()))
|
||||
*result = HTBOTTOM;
|
||||
|
||||
if ((nX > 0) && (nX < m_border_width) && (nY > 0) && (nY < m_border_width))
|
||||
*result = HTTOPLEFT;
|
||||
|
||||
if ((nX > this->width() - m_border_width) && (nX < this->width()) && (nY > 0) && (nY < m_border_width))
|
||||
*result = HTTOPRIGHT;
|
||||
|
||||
if ((nX > 0) && (nX < m_border_width) && (nY > this->height() - m_border_width) && (nY < this->height()))
|
||||
*result = HTBOTTOMLEFT;
|
||||
|
||||
if ((nX > this->width() - m_border_width) && (nX < this->width()) && (nY > this->height() - m_border_width) && (nY < this->height()))
|
||||
*result = HTBOTTOMRIGHT;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return QWidget::nativeEvent(eventType, message, result);
|
||||
}
|
40
src/sui.h
Normal file
40
src/sui.h
Normal file
@ -0,0 +1,40 @@
|
||||
#ifndef SUI_H
|
||||
#define SUI_H
|
||||
|
||||
#include "common.h"
|
||||
#include <QMainWindow>
|
||||
#ifdef Q_OS_WIN
|
||||
#include <QWindow>
|
||||
#include <windowsx.h>
|
||||
#pragma execution_character_set("utf-8")
|
||||
#endif
|
||||
|
||||
#include "sui_title.h"
|
||||
|
||||
class sui : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit sui(QWidget *parent = 0);
|
||||
~sui();
|
||||
|
||||
private:
|
||||
void init_layout();
|
||||
|
||||
private:
|
||||
QVBoxLayout *m_layout;
|
||||
QWidget *m_widget;
|
||||
QPoint m_point;
|
||||
bool m_press;
|
||||
int m_border_width;
|
||||
sui_title* m_title;
|
||||
QWidget* m_main_qwidget;
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *event);
|
||||
void showEvent(QShowEvent *event);
|
||||
void mouseMoveEvent(QMouseEvent *event);
|
||||
void mousePressEvent(QMouseEvent *event);
|
||||
void mouseReleaseEvent(QMouseEvent *event);
|
||||
bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result);
|
||||
};
|
||||
#endif // SUI_H
|
12
src/sui_base.h
Normal file
12
src/sui_base.h
Normal file
@ -0,0 +1,12 @@
|
||||
#ifndef SUI_BASE_H
|
||||
#define SUI_BASE_H
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
typedef struct {
|
||||
int set_font;
|
||||
int set_style;
|
||||
}sui_sets;
|
||||
|
||||
extern sui_sets s_sets;
|
||||
#endif // SUI_BASE_H
|
244
src/sui_title.cpp
Normal file
244
src/sui_title.cpp
Normal file
@ -0,0 +1,244 @@
|
||||
#include "sui_title.h"
|
||||
sui_title::sui_title(QWidget *parent)
|
||||
: QWidget (parent),
|
||||
m_menu(nullptr),
|
||||
s_menu(nullptr),
|
||||
f_menu(nullptr)
|
||||
{
|
||||
m_parent=parent;
|
||||
//给成员变量申请内存
|
||||
m_icon_button = new QPushButton(/*this*/);
|
||||
m_min_button = new QPushButton(this);
|
||||
m_max_button = new QPushButton(this);
|
||||
m_close_button = new QPushButton(this);
|
||||
//初始化图标Label
|
||||
m_icon_button->setFixedSize(35,35);
|
||||
m_icon_button->setAutoFillBackground(true);
|
||||
m_icon_button->setFlat(true);
|
||||
|
||||
//设置按钮的固定大小、图片、取消边框
|
||||
m_min_button->setIconSize(QSize(25,25));
|
||||
m_min_button->setAutoFillBackground(true);
|
||||
m_min_button->setFlat(true);
|
||||
//--
|
||||
m_max_button->setIconSize(QSize(25,25));
|
||||
m_max_button->setAutoFillBackground(true);
|
||||
m_max_button->setFlat(true);
|
||||
//--
|
||||
m_close_button->setIconSize(QSize(25,25));
|
||||
m_close_button->setAutoFillBackground(true);
|
||||
m_close_button->setFlat(true);
|
||||
|
||||
//设置窗口部件的名称
|
||||
setObjectName(tr("sui_title"));
|
||||
m_icon_button->setObjectName(tr("ico_button"));
|
||||
m_min_button->setObjectName(tr("min_button"));
|
||||
m_max_button->setObjectName(tr("max_button"));
|
||||
m_close_button->setObjectName(tr("close_button"));
|
||||
//给按钮设置静态tooltip,当鼠标移上去时显示tooltip
|
||||
m_min_button->setToolTip(tr("最小化"));
|
||||
m_max_button->setToolTip(tr("最大化"));
|
||||
m_close_button->setToolTip(tr("关闭"));
|
||||
//标题栏布局
|
||||
m_layout = new QHBoxLayout(this);
|
||||
m_layout->setAlignment(Qt::AlignCenter);
|
||||
m_layout->addWidget(m_icon_button);
|
||||
m_layout->addItem(sparcer_item);
|
||||
m_layout->addWidget(m_min_button);
|
||||
m_layout->addWidget(m_max_button);
|
||||
m_layout->addWidget(m_close_button);
|
||||
m_layout->setSpacing(5);
|
||||
m_layout->setContentsMargins(0, 0, 0, 0);
|
||||
setFixedHeight(40);
|
||||
setLayout(m_layout);
|
||||
s_sets.set_font=0;
|
||||
s_sets.set_style=1;
|
||||
QDir *fontDir = new QDir(tr(":/res/font/"));
|
||||
font_table = fontDir->entryList(QDir::Files);
|
||||
QDir *styleDir = new QDir(tr(":/res/qss/"));
|
||||
style_table = styleDir->entryList(QDir::Files);
|
||||
slots_set_style_change();
|
||||
slots_set_font_change();
|
||||
connect_slots();
|
||||
}
|
||||
sui_title::~sui_title()
|
||||
{
|
||||
}
|
||||
void sui_title::connect_slots(){
|
||||
//连接三个按钮的信号槽3
|
||||
connect(m_icon_button, SIGNAL(clicked(bool)), this, SLOT(slots_ico_menu()));
|
||||
connect(m_min_button, SIGNAL(clicked(bool)), this, SLOT(on_clicked()));
|
||||
connect(m_max_button, SIGNAL(clicked(bool)), this, SLOT(on_clicked()));
|
||||
connect(m_close_button, SIGNAL(clicked(bool)), this, SLOT(on_clicked()));
|
||||
}
|
||||
void sui_title::slots_ico_menu()
|
||||
{
|
||||
m_menu = new QMenu();
|
||||
//外观
|
||||
if(!s_menu){
|
||||
QActionGroup* s_QGroup = new QActionGroup(this);
|
||||
s_menu = new QMenu(tr("外观设置"));
|
||||
for(int i=0;i<=style_table.count()-1;i++){
|
||||
QString sName=QFileInfo(style_table[i]).baseName();
|
||||
QAction* s_Action=new QAction(sName,s_QGroup);
|
||||
s_Action->setObjectName(QString::number(i));
|
||||
s_Action->setCheckable(true);
|
||||
if(i==s_sets.set_style){
|
||||
s_Action->setChecked(true);
|
||||
}
|
||||
connect(s_Action,SIGNAL(triggered (bool)),this,SLOT(slots_set_style_change()));
|
||||
s_menu->addAction(s_Action);
|
||||
}
|
||||
}
|
||||
//字体
|
||||
if(!f_menu){
|
||||
QActionGroup* f_QGroup = new QActionGroup(this);
|
||||
f_menu = new QMenu(tr("字体设置"));
|
||||
for(int i=0;i<=font_table.count()-1;i++){
|
||||
QAction* f_Action=new QAction(font_table[i],f_QGroup);
|
||||
f_Action->setObjectName(QString::number(i));
|
||||
f_Action->setCheckable(true);
|
||||
if(i==s_sets.set_font){
|
||||
f_Action->setChecked(true);
|
||||
}
|
||||
connect(f_Action,SIGNAL(triggered (bool)),this,SLOT(slots_set_font_change()));
|
||||
f_menu->addAction(f_Action);
|
||||
}
|
||||
}
|
||||
m_menu->addMenu(s_menu);
|
||||
m_menu->addMenu(f_menu);
|
||||
m_menu->exec(QCursor::pos());
|
||||
delete m_menu;
|
||||
m_menu=nullptr;
|
||||
}
|
||||
void sui_title::slots_set_style_change()
|
||||
{
|
||||
if(sender()!=nullptr){
|
||||
s_sets.set_style=sender()->objectName().toInt();
|
||||
}
|
||||
change_style(s_sets.set_style);
|
||||
}
|
||||
void sui_title::slots_set_font_change()
|
||||
{
|
||||
if(sender()!=nullptr){
|
||||
s_sets.set_font=sender()->objectName().toInt();
|
||||
}
|
||||
QString font=tr(":/res/font/")+font_table[s_sets.set_font];
|
||||
int fontId = QFontDatabase::addApplicationFont(font);
|
||||
QStringList fontIDs = QFontDatabase::applicationFontFamilies(fontId);
|
||||
if (!fontIDs.isEmpty()) {
|
||||
QFont font(fontIDs.first());
|
||||
font.setPointSize(10);
|
||||
QApplication::setFont(font);
|
||||
}
|
||||
else {
|
||||
qDebug()<<"Failed to load font.";
|
||||
}
|
||||
change_style(s_sets.set_style);
|
||||
}
|
||||
void sui_title::change_style(int index){
|
||||
QString style=tr(":/res/qss/")+style_table[index];
|
||||
QFile qss(style);
|
||||
if (qss.open(QFile::ReadOnly))
|
||||
{
|
||||
QString styleSheet = this->styleSheet();
|
||||
styleSheet += QLatin1String(qss.readAll());
|
||||
m_parent->setStyleSheet(styleSheet);
|
||||
}
|
||||
qss.close();
|
||||
m_parent->update();
|
||||
}
|
||||
|
||||
//双击标题栏进行界面的最大化/还原
|
||||
void sui_title::mouse_double_click_event(QMouseEvent *event)
|
||||
{
|
||||
Q_UNUSED(event); //没有实质性的作用,只是用来允许event可以不使用,用来避免编译器警告
|
||||
emit m_max_button->clicked();
|
||||
}
|
||||
//使用事件过滤器监听标题栏所在的窗体,所以当窗体标题、图标等信息发生改变时,标题栏也应该随之改变
|
||||
bool sui_title::event_filter(QObject *obj, QEvent *event)
|
||||
{
|
||||
qDebug()<<event->type();
|
||||
switch ( event->type() ) //判断发生事件的类型
|
||||
{
|
||||
case QEvent::WindowTitleChange: //窗口标题改变事件
|
||||
{
|
||||
QWidget *pWidget = qobject_cast<QWidget *>(obj); //获得发生事件的窗口对象
|
||||
if (pWidget)
|
||||
{
|
||||
//窗体标题改变,则标题栏标题也随之改变
|
||||
//m_pTitleLabel->setText(pWidget->windowTitle());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QEvent::WindowIconChange: //窗口图标改变事件
|
||||
{
|
||||
QWidget *pWidget = qobject_cast<QWidget *>(obj);
|
||||
if (pWidget)
|
||||
{
|
||||
//窗体图标改变,则标题栏图标也随之改变
|
||||
QIcon icon = pWidget->windowIcon();
|
||||
//m_pIconLabel->setPixmap(icon.pixmap(m_pIconLabel->size()));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QEvent::Resize:
|
||||
up_maximize(); //最大化/还原
|
||||
return true;
|
||||
default:
|
||||
return QWidget::eventFilter(obj, event);
|
||||
}
|
||||
return QWidget::eventFilter(obj, event);
|
||||
}
|
||||
//进行最小化、最大化/还原、关闭操作
|
||||
void sui_title::on_clicked()
|
||||
{
|
||||
//QObject::Sender()返回发送信号的对象的指针,返回类型为QObject *
|
||||
QPushButton *pButton = qobject_cast<QPushButton *>(sender());
|
||||
QWidget *pWindow = this->window(); //获得标题栏所在的窗口
|
||||
if (pWindow->isWindow())
|
||||
{
|
||||
//判断发送信号的对象使哪个按钮
|
||||
if (pButton == m_min_button)
|
||||
{
|
||||
pWindow->showMinimized(); //窗口最小化显示
|
||||
}
|
||||
else if (pButton == m_max_button)
|
||||
{
|
||||
pWindow->isFullScreen() ? pWindow->showNormal() : pWindow->showFullScreen();
|
||||
}
|
||||
else if (pButton == m_close_button)
|
||||
{
|
||||
QApplication::quit();
|
||||
}
|
||||
}
|
||||
}
|
||||
//最大化/还原
|
||||
void sui_title::up_maximize()
|
||||
{
|
||||
QWidget *pWindow = this->window(); //获得标题栏所在的窗口
|
||||
if (pWindow->isWindow())
|
||||
{
|
||||
bool bMaximize = pWindow->isFullScreen(); //判断窗口是不是最大化状态,是则返回true,否则返回false
|
||||
if (bMaximize)
|
||||
{
|
||||
//目前窗口是最大化状态,则最大化/还原的toolTip设置为"Restore"
|
||||
m_max_button->setToolTip(tr("Restore"));
|
||||
//设置按钮的属性名为"maximizeProperty"
|
||||
m_max_button->setProperty("maximizeProperty", tr("restore"));
|
||||
}
|
||||
else
|
||||
{
|
||||
//目前窗口是还原状态,则最大化/还原的toolTip设置为"Maximize"
|
||||
m_max_button->setToolTip(tr("Maximize"));
|
||||
//设置按钮的属性名为"maximizeProperty"
|
||||
m_max_button->setProperty("maximizeProperty", tr("maximize"));
|
||||
}
|
||||
m_max_button->setStyle(QApplication::style());
|
||||
}
|
||||
}
|
||||
void sui_title::set_title_txt(QString str){
|
||||
//m_pTitleLabel->setText(str);
|
||||
}
|
60
src/sui_title.h
Normal file
60
src/sui_title.h
Normal file
@ -0,0 +1,60 @@
|
||||
#ifndef SUI_TITLE_H
|
||||
#define SUI_TITLE_H
|
||||
|
||||
#include <QFrame>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QHBoxLayout>
|
||||
#include <QMouseEvent>
|
||||
#include <QApplication>
|
||||
#include <QStyleOption>
|
||||
#include <QPainter>
|
||||
#include <QFile>
|
||||
#include <QFileInfo>
|
||||
#include <QMenu>
|
||||
#include <QDir>
|
||||
#include <QActionGroup>
|
||||
#include <QFontDatabase>
|
||||
#include "sui_base.h"
|
||||
|
||||
sui_sets s_sets;
|
||||
class sui_title: public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit sui_title(QWidget *parent = nullptr);
|
||||
~sui_title();
|
||||
void set_title_txt(QString str);
|
||||
protected:
|
||||
//双击标题栏进行界面的最大化/还原
|
||||
void mouse_double_click_event(QMouseEvent *event);
|
||||
//设置界面标题与图标
|
||||
bool event_filter(QObject *obj, QEvent *event);
|
||||
private slots:
|
||||
//进行最小化、最大化/还原、关闭操作
|
||||
void on_clicked();
|
||||
private:
|
||||
//最大化/还原
|
||||
void up_maximize();
|
||||
void change_style(int);
|
||||
void connect_slots();
|
||||
private:
|
||||
QWidget *m_parent;
|
||||
QHBoxLayout *m_layout;
|
||||
QPushButton *m_icon_button; //标题栏图标
|
||||
QLabel *m_title_label; //标题栏标题
|
||||
QPushButton *m_min_button; //最小化按钮
|
||||
QPushButton *m_max_button; //最大化/还原按钮
|
||||
QPushButton *m_close_button; //关闭按钮
|
||||
QSpacerItem *sparcer_item = new QSpacerItem(0,0,QSizePolicy::Expanding,QSizePolicy::Fixed);
|
||||
QMenu *m_menu;
|
||||
QMenu* s_menu;
|
||||
QMenu* f_menu;
|
||||
QStringList style_table;
|
||||
QStringList font_table;
|
||||
public slots:
|
||||
void slots_ico_menu();
|
||||
void slots_set_style_change();
|
||||
void slots_set_font_change();
|
||||
};
|
||||
#endif
|
22
suires.qrc
Normal file
22
suires.qrc
Normal file
@ -0,0 +1,22 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>res/img/logo.png</file>
|
||||
<file>res/img/logo.ico</file>
|
||||
<file>res/img/btn/btn_close.png</file>
|
||||
<file>res/img/btn/btn_max.png</file>
|
||||
<file>res/img/btn/btn_min.png</file>
|
||||
<file>res/img/btn/btn_restart_max.png</file>
|
||||
<file>res/qss/dark_style.qss</file>
|
||||
<file>res/qss/light_style.qss</file>
|
||||
<file>res/lang/qt_help_zh_CN.qm</file>
|
||||
<file>res/txt/about.txt</file>
|
||||
<file>res/font/HarmonyOS_Sans_SC_Black.ttf</file>
|
||||
<file>res/font/HarmonyOS_Sans_SC_Bold.ttf</file>
|
||||
<file>res/font/HarmonyOS_Sans_SC_Light.ttf</file>
|
||||
<file>res/font/HarmonyOS_Sans_SC_Medium.ttf</file>
|
||||
<file>res/font/HarmonyOS_Sans_SC_Regular.ttf</file>
|
||||
<file>res/font/HarmonyOS_Sans_SC_Thin.ttf</file>
|
||||
<file>res/font/PingFang Heavy.ttf</file>
|
||||
<file>res/font/PingFang Medium.ttf</file>
|
||||
</qresource>
|
||||
</RCC>
|
Loading…
Reference in New Issue
Block a user