From 727da63225ab9a485ceb89a3c448d0078535d30c Mon Sep 17 00:00:00 2001 From: laixingyu Date: Wed, 13 Dec 2023 14:35:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TreasureFinder.pro | 6 + core_base/appdata.cpp | 20 + core_base/appdata.h | 18 + core_base/appinit.cpp | 57 + core_base/appinit.h | 23 + core_base/base64helper.cpp | 41 + core_base/base64helper.h | 37 + core_base/core_base.pri | 65 ++ core_base/customstyle.cpp | 66 ++ core_base/customstyle.h | 13 + core_base/h3.pri | 7 + core_base/head.h | 12 + core_base/iconhelper.cpp | 387 +++++++ core_base/iconhelper.h | 189 ++++ core_base/qrc/font.qrc | 7 + core_base/qrc/font/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes core_base/qrc/font/iconfont.ttf | Bin 0 -> 155620 bytes core_base/qrc/font/pe-icon-set-weather.ttf | Bin 0 -> 81408 bytes core_base/qrc/image.qrc | 5 + core_base/qrc/image/bg_novideo.png | Bin 0 -> 1982 bytes core_base/qrc/qm.qrc | 6 + core_base/quihelper.cpp | 1006 +++++++++++++++++ core_base/quihelper.h | 152 +++ main.cpp | 6 + qss.qrc | 28 + qss/blacksoft.css | 694 ++++++++++++ qss/blacksoft/add_bottom.png | Bin 0 -> 335 bytes qss/blacksoft/add_left.png | Bin 0 -> 377 bytes qss/blacksoft/add_right.png | Bin 0 -> 352 bytes qss/blacksoft/add_top.png | Bin 0 -> 348 bytes qss/blacksoft/arrow_bottom.png | Bin 0 -> 335 bytes qss/blacksoft/arrow_left.png | Bin 0 -> 370 bytes qss/blacksoft/arrow_right.png | Bin 0 -> 354 bytes qss/blacksoft/arrow_top.png | Bin 0 -> 349 bytes qss/blacksoft/branch_close.png | Bin 0 -> 257 bytes qss/blacksoft/branch_open.png | Bin 0 -> 445 bytes qss/blacksoft/calendar_nextmonth.png | Bin 0 -> 623 bytes qss/blacksoft/calendar_prevmonth.png | Bin 0 -> 667 bytes qss/blacksoft/checkbox_checked.png | Bin 0 -> 593 bytes qss/blacksoft/checkbox_checked_disable.png | Bin 0 -> 656 bytes qss/blacksoft/checkbox_parcial.png | Bin 0 -> 326 bytes qss/blacksoft/checkbox_parcial_disable.png | Bin 0 -> 333 bytes qss/blacksoft/checkbox_unchecked.png | Bin 0 -> 572 bytes qss/blacksoft/checkbox_unchecked_disable.png | Bin 0 -> 624 bytes qss/blacksoft/menu_checked.png | Bin 0 -> 501 bytes qss/blacksoft/radiobutton_checked.png | Bin 0 -> 1421 bytes qss/blacksoft/radiobutton_checked_disable.png | Bin 0 -> 1614 bytes qss/blacksoft/radiobutton_unchecked.png | Bin 0 -> 1229 bytes .../radiobutton_unchecked_disable.png | Bin 0 -> 1365 bytes resource.qrc | 3 + treasurefinder_zh_CN.ts | 87 +- widget/logindialog.cpp | 119 ++ widget/logindialog.h | 22 + widget/logindialog.ui | 312 ++++- widget/trendswidget.cpp | 13 +- 55 files changed, 3327 insertions(+), 74 deletions(-) create mode 100644 core_base/appdata.cpp create mode 100644 core_base/appdata.h create mode 100644 core_base/appinit.cpp create mode 100644 core_base/appinit.h create mode 100644 core_base/base64helper.cpp create mode 100644 core_base/base64helper.h create mode 100644 core_base/core_base.pri create mode 100644 core_base/customstyle.cpp create mode 100644 core_base/customstyle.h create mode 100644 core_base/h3.pri create mode 100644 core_base/head.h create mode 100644 core_base/iconhelper.cpp create mode 100644 core_base/iconhelper.h create mode 100644 core_base/qrc/font.qrc create mode 100644 core_base/qrc/font/fontawesome-webfont.ttf create mode 100644 core_base/qrc/font/iconfont.ttf create mode 100644 core_base/qrc/font/pe-icon-set-weather.ttf create mode 100644 core_base/qrc/image.qrc create mode 100644 core_base/qrc/image/bg_novideo.png create mode 100644 core_base/qrc/qm.qrc create mode 100644 core_base/quihelper.cpp create mode 100644 core_base/quihelper.h create mode 100644 qss.qrc create mode 100644 qss/blacksoft.css create mode 100644 qss/blacksoft/add_bottom.png create mode 100644 qss/blacksoft/add_left.png create mode 100644 qss/blacksoft/add_right.png create mode 100644 qss/blacksoft/add_top.png create mode 100644 qss/blacksoft/arrow_bottom.png create mode 100644 qss/blacksoft/arrow_left.png create mode 100644 qss/blacksoft/arrow_right.png create mode 100644 qss/blacksoft/arrow_top.png create mode 100644 qss/blacksoft/branch_close.png create mode 100644 qss/blacksoft/branch_open.png create mode 100644 qss/blacksoft/calendar_nextmonth.png create mode 100644 qss/blacksoft/calendar_prevmonth.png create mode 100644 qss/blacksoft/checkbox_checked.png create mode 100644 qss/blacksoft/checkbox_checked_disable.png create mode 100644 qss/blacksoft/checkbox_parcial.png create mode 100644 qss/blacksoft/checkbox_parcial_disable.png create mode 100644 qss/blacksoft/checkbox_unchecked.png create mode 100644 qss/blacksoft/checkbox_unchecked_disable.png create mode 100644 qss/blacksoft/menu_checked.png create mode 100644 qss/blacksoft/radiobutton_checked.png create mode 100644 qss/blacksoft/radiobutton_checked_disable.png create mode 100644 qss/blacksoft/radiobutton_unchecked.png create mode 100644 qss/blacksoft/radiobutton_unchecked_disable.png create mode 100644 resource.qrc diff --git a/TreasureFinder.pro b/TreasureFinder.pro index a44a57a..40f401e 100644 --- a/TreasureFinder.pro +++ b/TreasureFinder.pro @@ -8,6 +8,9 @@ CONFIG += c++11 # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 +INCLUDEPATH += $$PWD/core_base +include ($$PWD/core_base/core_base.pri) + SOURCES += \ basedatamanager.cpp \ main.cpp \ @@ -57,3 +60,6 @@ TRANSLATIONS += treasurefinder_zh_CN.ts qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target + +RESOURCES += \ + qss.qrc diff --git a/core_base/appdata.cpp b/core_base/appdata.cpp new file mode 100644 index 0000000..b532a42 --- /dev/null +++ b/core_base/appdata.cpp @@ -0,0 +1,20 @@ +#include "appdata.h" +#include "quihelper.h" + +QString AppData::TitleFlag = "(QQ: 517216493 WX: feiyangqingyun)"; +int AppData::RowHeight = 25; +int AppData::RightWidth = 180; +int AppData::FormWidth = 1200; +int AppData::FormHeight = 750; + +void AppData::checkRatio() +{ + //根据分辨率设定宽高 + int width = QUIHelper::deskWidth(); + if (width >= 1440) { + RowHeight = RowHeight < 25 ? 25 : RowHeight; + RightWidth = RightWidth < 220 ? 220 : RightWidth; + FormWidth = FormWidth < 1200 ? 1200 : FormWidth; + FormHeight = FormHeight < 800 ? 800 : FormHeight; + } +} diff --git a/core_base/appdata.h b/core_base/appdata.h new file mode 100644 index 0000000..197adf4 --- /dev/null +++ b/core_base/appdata.h @@ -0,0 +1,18 @@ +#ifndef APPDATA_H +#define APPDATA_H + +#include "head.h" + +class AppData +{ +public: + static QString TitleFlag; //标题标识 + static int RowHeight; //行高 + static int RightWidth; //右侧宽度 + static int FormWidth; //窗体宽度 + static int FormHeight; //窗体高度 + + static void checkRatio(); //校验分辨率 +}; + +#endif // APPDATA_H diff --git a/core_base/appinit.cpp b/core_base/appinit.cpp new file mode 100644 index 0000000..8ecdb2a --- /dev/null +++ b/core_base/appinit.cpp @@ -0,0 +1,57 @@ +#include "appinit.h" +#include "qmutex.h" +#include "qapplication.h" +#include "qevent.h" +#include "qwidget.h" +#include "qdebug.h" + +QScopedPointer AppInit::self; +AppInit *AppInit::Instance() +{ + if (self.isNull()) { + static QMutex mutex; + QMutexLocker locker(&mutex); + if (self.isNull()) { + self.reset(new AppInit); + } + } + + return self.data(); +} + +AppInit::AppInit(QObject *parent) : QObject(parent) +{ +} + +bool AppInit::eventFilter(QObject *watched, QEvent *event) +{ + QWidget *w = (QWidget *)watched; + if (!w->property("canMove").toBool()) { + return QObject::eventFilter(watched, event); + } + + static QPoint mousePoint; + static bool mousePressed = false; + + QMouseEvent *mouseEvent = static_cast(event); + if (mouseEvent->type() == QEvent::MouseButtonPress) { + if (mouseEvent->button() == Qt::LeftButton) { + mousePressed = true; + mousePoint = mouseEvent->globalPos() - w->pos(); + } + } else if (mouseEvent->type() == QEvent::MouseButtonRelease) { + mousePressed = false; + } else if (mouseEvent->type() == QEvent::MouseMove) { + if (mousePressed) { + w->move(mouseEvent->globalPos() - mousePoint); + return true; + } + } + + return QObject::eventFilter(watched, event); +} + +void AppInit::start() +{ + qApp->installEventFilter(this); +} diff --git a/core_base/appinit.h b/core_base/appinit.h new file mode 100644 index 0000000..467ad84 --- /dev/null +++ b/core_base/appinit.h @@ -0,0 +1,23 @@ +#ifndef APPINIT_H +#define APPINIT_H + +#include + +class AppInit : public QObject +{ + Q_OBJECT +public: + static AppInit *Instance(); + explicit AppInit(QObject *parent = 0); + +protected: + bool eventFilter(QObject *watched, QEvent *event); + +private: + static QScopedPointer self; + +public slots: + void start(); +}; + +#endif // APPINIT_H diff --git a/core_base/base64helper.cpp b/core_base/base64helper.cpp new file mode 100644 index 0000000..e294fcd --- /dev/null +++ b/core_base/base64helper.cpp @@ -0,0 +1,41 @@ +#include "base64helper.h" +#include "qbuffer.h" +#include "qdebug.h" + +QString Base64Helper::imageToBase64(const QImage &image) +{ + return QString(imageToBase64x(image)); +} + +QByteArray Base64Helper::imageToBase64x(const QImage &image) +{ + //这个转换可能比较耗时建议在线程中执行 + QByteArray data; + QBuffer buffer(&data); + image.save(&buffer, "JPG"); + data = data.toBase64(); + return data; +} + +QImage Base64Helper::base64ToImage(const QString &data) +{ + return base64ToImagex(data.toUtf8()); +} + +QImage Base64Helper::base64ToImagex(const QByteArray &data) +{ + //这个转换可能比较耗时建议在线程中执行 + QImage image; + image.loadFromData(QByteArray::fromBase64(data)); + return image; +} + +QString Base64Helper::textToBase64(const QString &text) +{ + return QString(text.toUtf8().toBase64()); +} + +QString Base64Helper::base64ToText(const QString &text) +{ + return QString(QByteArray::fromBase64(text.toUtf8())); +} diff --git a/core_base/base64helper.h b/core_base/base64helper.h new file mode 100644 index 0000000..e17cae6 --- /dev/null +++ b/core_base/base64helper.h @@ -0,0 +1,37 @@ +#ifndef BASE64HELPER_H +#define BASE64HELPER_H + +/** + * base64编码转换类 作者:feiyangqingyun(QQ:517216493) 2016-12-16 + * 1. 图片转base64字符串。 + * 2. base64字符串转图片。 + * 3. 字符转base64字符串。 + * 4. base64字符串转字符。 + * 5. 后期增加数据压缩。 + * 6. Qt6对base64编码转换进行了重写效率提升至少200%。 + */ + +#include + +#ifdef quc +class Q_DECL_EXPORT Base64Helper +#else +class Base64Helper +#endif + +{ +public: + //图片转base64字符串 + static QString imageToBase64(const QImage &image); + static QByteArray imageToBase64x(const QImage &image); + + //base64字符串转图片 + static QImage base64ToImage(const QString &data); + static QImage base64ToImagex(const QByteArray &data); + + //字符串与base64互转 + static QString textToBase64(const QString &text); + static QString base64ToText(const QString &text); +}; + +#endif // BASE64HELPER_H diff --git a/core_base/core_base.pri b/core_base/core_base.pri new file mode 100644 index 0000000..23865b3 --- /dev/null +++ b/core_base/core_base.pri @@ -0,0 +1,65 @@ +QT += network +greaterThan(QT_MAJOR_VERSION, 4) { +lessThan(QT_MAJOR_VERSION, 6) { +android {QT += androidextras} +} else { +QT += core-private +}} + +#指定编译产生的文件分门别类放到对应目录 +MOC_DIR = temp/moc +RCC_DIR = temp/rcc +UI_DIR = temp/ui +OBJECTS_DIR = temp/obj + +#指定编译生成的可执行文件放到源码上一级目录下的bin目录 +!android { +!wasm { +DESTDIR = $$PWD/../bin +}} + +#把所有警告都关掉眼不见为净 +CONFIG += warn_off +#开启大资源支持 +CONFIG += resources_big +#开启后会将打印信息用控制台输出 +#CONFIG += console +#开启后不会生成空的 debug release 目录 +#CONFIG -= debug_and_release + +#引入全志H3芯片依赖 +include ($$PWD/h3.pri) +#将当前目录加入到头文件路径 +INCLUDEPATH += $$PWD + +HEADERS += $$PWD/head.h +HEADERS += $$PWD/appdata.h +SOURCES += $$PWD/appdata.cpp + +HEADERS += $$PWD/appinit.h +SOURCES += $$PWD/appinit.cpp + +HEADERS += $$PWD/base64helper.h +SOURCES += $$PWD/base64helper.cpp + +HEADERS += $$PWD/customstyle.h +SOURCES += $$PWD/customstyle.cpp + +HEADERS += $$PWD/iconhelper.h +SOURCES += $$PWD/iconhelper.cpp + +HEADERS += $$PWD/quihelper.h +SOURCES += $$PWD/quihelper.cpp + +#可以指定不加载对应的资源文件 +!contains(DEFINES, no_qrc_image) { +RESOURCES += $$PWD/qrc/image.qrc +} + +!contains(DEFINES, no_qrc_qm) { +RESOURCES += $$PWD/qrc/qm.qrc +} + +!contains(DEFINES, no_qrc_font) { +RESOURCES += $$PWD/qrc/font.qrc +} diff --git a/core_base/customstyle.cpp b/core_base/customstyle.cpp new file mode 100644 index 0000000..6ea7402 --- /dev/null +++ b/core_base/customstyle.cpp @@ -0,0 +1,66 @@ +#include "customstyle.h" +#include "qapplication.h" +#include "qpalette.h" + +void CustomStyle::initStyle(int fontSize, int radioButtonSize, int checkBoxSize, int sliderHeight) +{ + if (fontSize <= 0) { + return; + } + + QStringList list; + //全局字体 + list << QString("*{font-size:%1px;}").arg(fontSize); + //单选框 + list << QString("QRadioButton::indicator{width:%1px;height:%1px;}").arg(radioButtonSize); + //复选框 + list << QString("QCheckBox::indicator,QGroupBox::indicator,QTreeWidget::indicator,QListWidget::indicator{width:%1px;height:%1px;}").arg(checkBoxSize); + + //滑块颜色 +#if 0 + QString normalColor = "#e3e3e3"; + QString grooveColor = "#0078d7"; + QString handleColor = "#FFFFFF"; + QString borderColor = "#9B9B9B"; +#else + QPalette palette; + for (int i = 0; i < 21; ++i) { + //qDebug() << i << palette.color((QPalette::ColorRole)i).name(); + } + + QString normalColor = palette.color(QPalette::Midlight).name(); + QString grooveColor = palette.color(QPalette::Highlight).name(); + QString handleColor = palette.color(QPalette::Light).name(); + QString borderColor = palette.color(QPalette::Shadow).name(); +#endif + int sliderRadius = sliderHeight / 2; + int handleWidth = (sliderHeight * 3) / 2 + (sliderHeight / 5); + int handleRadius = handleWidth / 2 + 1; + int handleOffset = handleRadius / 2; + + //横向滑块 + list << QString("QSlider::horizontal{min-height:%1px;}").arg(sliderHeight * 2); + list << QString("QSlider::groove:horizontal{background:%1;height:%2px;border-radius:%3px;}") + .arg(normalColor).arg(sliderHeight).arg(sliderRadius); + list << QString("QSlider::add-page:horizontal{background:%1;height:%2px;border-radius:%3px;}") + .arg(normalColor).arg(sliderHeight).arg(sliderRadius); + list << QString("QSlider::sub-page:horizontal{background:%1;height:%2px;border-radius:%3px;}") + .arg(grooveColor).arg(sliderHeight).arg(sliderRadius); + list << QString("QSlider::handle:horizontal{border:1px solid %5;width:%2px;margin-top:-%3px;margin-bottom:-%3px;border-radius:%4px;" + "background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #FFFFFF,stop:0.8 %1);}") + .arg(handleColor).arg(handleWidth).arg(handleOffset).arg(handleRadius).arg(borderColor); + + //垂直滑块 + list << QString("QSlider::vertical{min-width:%1px;}").arg(sliderHeight * 2); + list << QString("QSlider::groove:vertical{background:%1;width:%2px;border-radius:%3px;}") + .arg(normalColor).arg(sliderHeight).arg(sliderRadius); + list << QString("QSlider::add-page:vertical{background:%1;width:%2px;border-radius:%3px;}") + .arg(grooveColor).arg(sliderHeight).arg(sliderRadius); + list << QString("QSlider::sub-page:vertical{background:%1;width:%2px;border-radius:%3px;}") + .arg(normalColor).arg(sliderHeight).arg(sliderRadius); + list << QString("QSlider::handle:vertical{border:1px solid %5;height:%2px;margin-left:-%3px;margin-right:-%3px;border-radius:%4px;" + "background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #FFFFFF,stop:0.8 %1);}") + .arg(handleColor).arg(handleWidth).arg(handleOffset).arg(handleRadius).arg(borderColor); + + qApp->setStyleSheet(list.join("")); +} diff --git a/core_base/customstyle.h b/core_base/customstyle.h new file mode 100644 index 0000000..cdad7d5 --- /dev/null +++ b/core_base/customstyle.h @@ -0,0 +1,13 @@ +#ifndef CUSTOMSTYLE_H +#define CUSTOMSTYLE_H + +#include + +class CustomStyle +{ +public: + //全局样式比如放大选择器 + static void initStyle(int fontSize = 15, int radioButtonSize = 18, int checkBoxSize = 16, int sliderHeight = 13); +}; + +#endif // CUSTOMSTYLE_H diff --git a/core_base/h3.pri b/core_base/h3.pri new file mode 100644 index 0000000..65ec6d1 --- /dev/null +++ b/core_base/h3.pri @@ -0,0 +1,7 @@ +unix:!macx { +contains(QT_ARCH, arm) { +contains(DEFINES, arma7) { +INCLUDEPATH += /usr/local/openssl-1.0.2m-h3-gcc-4.9.2/include +LIBS += -L/usr/local/openssl-1.0.2m-h3-gcc-4.9.2/lib -lssl -lcrypto +LIBS += -L/usr/local/h3_rootfsv -lXdmcp +}}} diff --git a/core_base/head.h b/core_base/head.h new file mode 100644 index 0000000..a8d5a79 --- /dev/null +++ b/core_base/head.h @@ -0,0 +1,12 @@ +#include +#include + +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) +#include +#endif + +#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0)) +#include +#endif + +#pragma execution_character_set("utf-8") diff --git a/core_base/iconhelper.cpp b/core_base/iconhelper.cpp new file mode 100644 index 0000000..1e703e6 --- /dev/null +++ b/core_base/iconhelper.cpp @@ -0,0 +1,387 @@ +#include "iconhelper.h" + +IconHelper *IconHelper::iconFontAliBaBa = 0; +IconHelper *IconHelper::iconFontAwesome = 0; +IconHelper *IconHelper::iconFontAwesome6 = 0; +IconHelper *IconHelper::iconFontWeather = 0; +int IconHelper::iconFontIndex = -1; + +void IconHelper::initFont() +{ + static bool isInit = false; + if (!isInit) { + isInit = true; + if (iconFontAliBaBa == 0) { + iconFontAliBaBa = new IconHelper(":/font/iconfont.ttf", "iconfont"); + } + if (iconFontAwesome == 0) { + iconFontAwesome = new IconHelper(":/font/fontawesome-webfont.ttf", "FontAwesome"); + } + if (iconFontAwesome6 == 0) { + iconFontAwesome6 = new IconHelper(":/font/fa-regular-400.ttf", "Font Awesome 6 Pro Regular"); + } + if (iconFontWeather == 0) { + iconFontWeather = new IconHelper(":/font/pe-icon-set-weather.ttf", "pe-icon-set-weather"); + } + } +} + +void IconHelper::setIconFontIndex(int index) +{ + iconFontIndex = index; +} + +QFont IconHelper::getIconFontAliBaBa() +{ + initFont(); + return iconFontAliBaBa->getIconFont(); +} + +QFont IconHelper::getIconFontAwesome() +{ + initFont(); + return iconFontAwesome->getIconFont(); +} + +QFont IconHelper::getIconFontAwesome6() +{ + initFont(); + return iconFontAwesome6->getIconFont(); +} + +QFont IconHelper::getIconFontWeather() +{ + initFont(); + return iconFontWeather->getIconFont(); +} + +IconHelper *IconHelper::getIconHelper(int icon) +{ + initFont(); + + //指定了字体索引则取对应索引的字体类 + //没指定则自动根据不同的字体的值选择对应的类 + //由于部分值范围冲突所以可以指定索引来取 + //fontawesome 0xf000-0xf2e0 + //fontawesome6 0xe000-0xe33d 0xf000-0xf8ff + //iconfont 0xe501-0xe793 0xe8d5-0xea5d 0xeb00-0xec00 + //weather 0xe900-0xe9cf + + IconHelper *iconHelper = iconFontAwesome; + if (iconFontIndex < 0) { + if ((icon >= 0xe501 && icon <= 0xe793) || (icon >= 0xe8d5 && icon <= 0xea5d) || (icon >= 0xeb00 && icon <= 0xec00)) { + iconHelper = iconFontAliBaBa; + } + } else if (iconFontIndex == 0) { + iconHelper = iconFontAliBaBa; + } else if (iconFontIndex == 1) { + iconHelper = iconFontAwesome; + } else if (iconFontIndex == 2) { + iconHelper = iconFontAwesome6; + } else if (iconFontIndex == 3) { + iconHelper = iconFontWeather; + } + + return iconHelper; +} + +void IconHelper::setIcon(QLabel *lab, int icon, quint32 size) +{ + getIconHelper(icon)->setIcon1(lab, icon, size); +} + +void IconHelper::setIcon(QAbstractButton *btn, int icon, quint32 size) +{ + getIconHelper(icon)->setIcon1(btn, icon, size); +} + +void IconHelper::setPixmap(QAbstractButton *btn, const QColor &color, int icon, quint32 size, + quint32 width, quint32 height, int flags) +{ + getIconHelper(icon)->setPixmap1(btn, color, icon, size, width, height, flags); +} + +QPixmap IconHelper::getPixmap(const QColor &color, int icon, quint32 size, + quint32 width, quint32 height, int flags) +{ + return getIconHelper(icon)->getPixmap1(color, icon, size, width, height, flags); +} + +void IconHelper::setStyle(QWidget *widget, QList btns, + QList icons, const IconHelper::StyleColor &styleColor) +{ + int icon = icons.first(); + getIconHelper(icon)->setStyle1(widget, btns, icons, styleColor); +} + +void IconHelper::setStyle(QWidget *widget, QList btns, + QList icons, const IconHelper::StyleColor &styleColor) +{ + int icon = icons.first(); + getIconHelper(icon)->setStyle1(widget, btns, icons, styleColor); +} + +void IconHelper::setStyle(QWidget *widget, QList btns, + QList icons, const IconHelper::StyleColor &styleColor) +{ + int icon = icons.first(); + getIconHelper(icon)->setStyle1(widget, btns, icons, styleColor); +} + + +IconHelper::IconHelper(const QString &fontFile, const QString &fontName, QObject *parent) : QObject(parent) +{ + //判断图形字体是否存在,不存在则加入 + QFontDatabase fontDb; + if (!fontDb.families().contains(fontName) && QFile(fontFile).exists()) { + int fontId = fontDb.addApplicationFont(fontFile); + QStringList listName = fontDb.applicationFontFamilies(fontId); + if (listName.count() == 0) { + qDebug() << QString("load %1 error").arg(fontName); + } + } + + //再次判断是否包含字体名称防止加载失败 + if (fontDb.families().contains(fontName)) { + iconFont = QFont(fontName); +#if (QT_VERSION >= QT_VERSION_CHECK(4,8,0)) + iconFont.setHintingPreference(QFont::PreferNoHinting); +#endif + } +} + +bool IconHelper::eventFilter(QObject *watched, QEvent *event) +{ + //根据不同的 + if (watched->inherits("QAbstractButton")) { + QAbstractButton *btn = (QAbstractButton *)watched; + int index = btns.indexOf(btn); + if (index >= 0) { + //不同的事件设置不同的图标,同时区分选中的和没有选中的 + if (btn->isChecked()) { + if (event->type() == QEvent::MouseButtonPress) { + QMouseEvent *mouseEvent = (QMouseEvent *)event; + if (mouseEvent->button() == Qt::LeftButton) { + btn->setIcon(QIcon(pixChecked.at(index))); + } + } else if (event->type() == QEvent::Enter) { + btn->setIcon(QIcon(pixChecked.at(index))); + } else if (event->type() == QEvent::Leave) { + btn->setIcon(QIcon(pixChecked.at(index))); + } + } else { + if (event->type() == QEvent::MouseButtonPress) { + QMouseEvent *mouseEvent = (QMouseEvent *)event; + if (mouseEvent->button() == Qt::LeftButton) { + btn->setIcon(QIcon(pixPressed.at(index))); + } + } else if (event->type() == QEvent::Enter) { + btn->setIcon(QIcon(pixHover.at(index))); + } else if (event->type() == QEvent::Leave) { + btn->setIcon(QIcon(pixNormal.at(index))); + } + } + } + } + + return QObject::eventFilter(watched, event); +} + +void IconHelper::toggled(bool checked) +{ + //选中和不选中设置不同的图标 + QAbstractButton *btn = (QAbstractButton *)sender(); + int index = btns.indexOf(btn); + if (checked) { + btn->setIcon(QIcon(pixChecked.at(index))); + } else { + btn->setIcon(QIcon(pixNormal.at(index))); + } +} + +QFont IconHelper::getIconFont() +{ + return this->iconFont; +} + +void IconHelper::setIcon1(QLabel *lab, int icon, quint32 size) +{ + iconFont.setPixelSize(size); + lab->setFont(iconFont); + lab->setText((QChar)icon); +} + +void IconHelper::setIcon1(QAbstractButton *btn, int icon, quint32 size) +{ + iconFont.setPixelSize(size); + btn->setFont(iconFont); + btn->setText((QChar)icon); +} + +void IconHelper::setPixmap1(QAbstractButton *btn, const QColor &color, int icon, quint32 size, + quint32 width, quint32 height, int flags) +{ + btn->setIcon(getPixmap1(color, icon, size, width, height, flags)); +} + +QPixmap IconHelper::getPixmap1(const QColor &color, int icon, quint32 size, + quint32 width, quint32 height, int flags) +{ + //主动绘制图形字体到图片 + QPixmap pix(width, height); + pix.fill(Qt::transparent); + + QPainter painter; + painter.begin(&pix); + painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); + painter.setPen(color); + + iconFont.setPixelSize(size); + painter.setFont(iconFont); + painter.drawText(pix.rect(), flags, (QChar)icon); + painter.end(); + return pix; +} + +void IconHelper::setStyle1(QWidget *widget, QList btns, QList icons, const IconHelper::StyleColor &styleColor) +{ + QList list; + foreach (QPushButton *btn, btns) { + list << btn; + } + + setStyle(widget, list, icons, styleColor); +} + +void IconHelper::setStyle1(QWidget *widget, QList btns, QList icons, const IconHelper::StyleColor &styleColor) +{ + QList list; + foreach (QToolButton *btn, btns) { + list << btn; + } + + setStyle(widget, list, icons, styleColor); +} + +void IconHelper::setStyle1(QWidget *widget, QList btns, QList icons, const IconHelper::StyleColor &styleColor) +{ + int btnCount = btns.count(); + int iconCount = icons.count(); + if (btnCount <= 0 || iconCount <= 0 || btnCount != iconCount) { + return; + } + + QString position = styleColor.position; + quint32 btnWidth = styleColor.btnWidth; + quint32 btnHeight = styleColor.btnHeight; + quint32 iconSize = styleColor.iconSize; + quint32 iconWidth = styleColor.iconWidth; + quint32 iconHeight = styleColor.iconHeight; + quint32 borderWidth = styleColor.borderWidth; + + //根据不同的位置计算边框 + QString strBorder; + if (position == "top") { + strBorder = QString("border-width:%1px 0px 0px 0px;padding-top:%1px;padding-bottom:%2px;") + .arg(borderWidth).arg(borderWidth * 2); + } else if (position == "right") { + strBorder = QString("border-width:0px %1px 0px 0px;padding-right:%1px;padding-left:%2px;") + .arg(borderWidth).arg(borderWidth * 2); + } else if (position == "bottom") { + strBorder = QString("border-width:0px 0px %1px 0px;padding-bottom:%1px;padding-top:%2px;") + .arg(borderWidth).arg(borderWidth * 2); + } else if (position == "left") { + strBorder = QString("border-width:0px 0px 0px %1px;padding-left:%1px;padding-right:%2px;") + .arg(borderWidth).arg(borderWidth * 2); + } + + //如果图标是左侧显示则需要让没有选中的按钮左侧也有加深的边框,颜色为背景颜色 + //如果图标在文字上面而设置的边框是 top bottom 也需要启用加深边框 + QStringList qss; + if (styleColor.defaultBorder) { + qss << QString("QWidget[flag=\"%1\"] QAbstractButton{border-style:solid;border-radius:0px;%2border-color:%3;color:%4;background:%5;}") + .arg(position).arg(strBorder).arg(styleColor.normalBgColor).arg(styleColor.normalTextColor).arg(styleColor.normalBgColor); + } else { + qss << QString("QWidget[flag=\"%1\"] QAbstractButton{border-style:none;border-radius:0px;padding:5px;color:%2;background:%3;}") + .arg(position).arg(styleColor.normalTextColor).arg(styleColor.normalBgColor); + } + + //悬停+按下+选中 + qss << QString("QWidget[flag=\"%1\"] QAbstractButton:hover{border-style:solid;%2border-color:%3;color:%4;background:%5;}") + .arg(position).arg(strBorder).arg(styleColor.borderColor).arg(styleColor.hoverTextColor).arg(styleColor.hoverBgColor); + qss << QString("QWidget[flag=\"%1\"] QAbstractButton:pressed{border-style:solid;%2border-color:%3;color:%4;background:%5;}") + .arg(position).arg(strBorder).arg(styleColor.borderColor).arg(styleColor.pressedTextColor).arg(styleColor.pressedBgColor); + qss << QString("QWidget[flag=\"%1\"] QAbstractButton:checked{border-style:solid;%2border-color:%3;color:%4;background:%5;}") + .arg(position).arg(strBorder).arg(styleColor.borderColor).arg(styleColor.checkedTextColor).arg(styleColor.checkedBgColor); + + //窗体背景颜色+按钮背景颜色 + qss << QString("QWidget#%1{background:%2;}") + .arg(widget->objectName()).arg(styleColor.normalBgColor); + qss << QString("QWidget>QAbstractButton{border-width:0px;background-color:%1;color:%2;}") + .arg(styleColor.normalBgColor).arg(styleColor.normalTextColor); + qss << QString("QWidget>QAbstractButton:hover{background-color:%1;color:%2;}") + .arg(styleColor.hoverBgColor).arg(styleColor.hoverTextColor); + qss << QString("QWidget>QAbstractButton:pressed{background-color:%1;color:%2;}") + .arg(styleColor.pressedBgColor).arg(styleColor.pressedTextColor); + qss << QString("QWidget>QAbstractButton:checked{background-color:%1;color:%2;}") + .arg(styleColor.checkedBgColor).arg(styleColor.checkedTextColor); + + //按钮宽度高度 + if (btnWidth > 0) { + qss << QString("QWidget>QAbstractButton{min-width:%1px;}").arg(btnWidth); + } + if (btnHeight > 0) { + qss << QString("QWidget>QAbstractButton{min-height:%1px;}").arg(btnHeight); + } + + //设置样式表 + widget->setStyleSheet(qss.join("")); + + //可能会重复调用设置所以先要移除上一次的 + for (int i = 0; i < btnCount; ++i) { + for (int j = 0; j < this->btns.count(); j++) { + if (this->btns.at(j) == btns.at(i)) { + disconnect(btns.at(i), SIGNAL(toggled(bool)), this, SLOT(toggled(bool))); + this->btns.at(j)->removeEventFilter(this); + this->btns.removeAt(j); + this->pixNormal.removeAt(j); + this->pixHover.removeAt(j); + this->pixPressed.removeAt(j); + this->pixChecked.removeAt(j); + break; + } + } + } + + //存储对应按钮对象,方便鼠标移上去的时候切换图片 + int checkedIndex = -1; + for (int i = 0; i < btnCount; ++i) { + int icon = icons.at(i); + QPixmap pixNormal = getPixmap1(styleColor.normalTextColor, icon, iconSize, iconWidth, iconHeight); + QPixmap pixHover = getPixmap1(styleColor.hoverTextColor, icon, iconSize, iconWidth, iconHeight); + QPixmap pixPressed = getPixmap1(styleColor.pressedTextColor, icon, iconSize, iconWidth, iconHeight); + QPixmap pixChecked = getPixmap1(styleColor.checkedTextColor, icon, iconSize, iconWidth, iconHeight); + + //记住最后选中的按钮 + QAbstractButton *btn = btns.at(i); + if (btn->isChecked()) { + checkedIndex = i; + } + + btn->setIcon(QIcon(pixNormal)); + btn->setIconSize(QSize(iconWidth, iconHeight)); + btn->installEventFilter(this); + connect(btn, SIGNAL(toggled(bool)), this, SLOT(toggled(bool))); + + this->btns << btn; + this->pixNormal << pixNormal; + this->pixHover << pixHover; + this->pixPressed << pixPressed; + this->pixChecked << pixChecked; + } + + //主动触发一下选中的按钮 + if (checkedIndex >= 0) { + QMetaObject::invokeMethod(btns.at(checkedIndex), "toggled", Q_ARG(bool, true)); + } +} diff --git a/core_base/iconhelper.h b/core_base/iconhelper.h new file mode 100644 index 0000000..adcf69e --- /dev/null +++ b/core_base/iconhelper.h @@ -0,0 +1,189 @@ +#ifndef ICONHELPER_H +#define ICONHELPER_H + +/** + * 超级图形字体类 作者:feiyangqingyun(QQ:517216493) 2016-11-23 + * 1. 可传入多种图形字体文件,一个类通用所有图形字体。 + * 2. 默认已经内置了阿里巴巴图形字体FontAliBaBa、国际知名图形字体FontAwesome、天气图形字体FontWeather。 + * 3. 可设置 QLabel、QAbstractButton 文本为图形字体。 + * 4. 可设置图形字体作为 QAbstractButton 按钮图标。 + * 5. 内置万能的方法 getPixmap 将图形字体值转换为图片。 + * 6. 无论是设置文本、图标、图片等都可以设置图标的大小、尺寸、颜色等参数。 + * 7. 内置超级导航栏样式设置,将图形字体作为图标设置到按钮。 + * 8. 支持各种颜色设置比如正常颜色、悬停颜色、按下颜色、选中颜色。 + * 9. 可设置导航的位置为 left、right、top、bottom 四种。 + * 10. 可设置导航加深边框颜色和粗细大小。 + * 11. 导航面板的各种切换效果比如鼠标悬停、按下、选中等都自动处理掉样式设置。 + * 12. 全局静态方法,接口丰富,使用极其简单方便。 + */ + +#include +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) +#include +#endif + +#ifdef quc +class Q_DECL_EXPORT IconHelper : public QObject +#else +class IconHelper : public QObject +#endif + +{ + Q_OBJECT + +private: + //阿里巴巴图形字体类 + static IconHelper *iconFontAliBaBa; + //FontAwesome图形字体类 + static IconHelper *iconFontAwesome; + //FontAwesome6图形字体类 + static IconHelper *iconFontAwesome6; + //天气图形字体类 + static IconHelper *iconFontWeather; + //图形字体索引 + static int iconFontIndex; + +public: + //样式颜色结构体 + struct StyleColor { + QString position; //位置 left right top bottom + bool defaultBorder; //默认有边框 + + quint32 btnWidth; //按钮宽度 + quint32 btnHeight; //按钮高度 + + quint32 iconSize; //图标字体尺寸 + quint32 iconWidth; //图标图片宽度 + quint32 iconHeight; //图标图片高度 + + quint32 borderWidth; //边框宽度 + QString borderColor; //边框颜色 + + QString normalBgColor; //正常背景颜色 + QString normalTextColor; //正常文字颜色 + QString hoverBgColor; //悬停背景颜色 + QString hoverTextColor; //悬停文字颜色 + QString pressedBgColor; //按下背景颜色 + QString pressedTextColor; //按下文字颜色 + QString checkedBgColor; //选中背景颜色 + QString checkedTextColor; //选中文字颜色 + + StyleColor() { + position = "left"; + defaultBorder = false; + + btnWidth = 0; + btnHeight = 0; + + iconSize = 12; + iconWidth = 15; + iconHeight = 15; + + borderWidth = 3; + borderColor = "#029FEA"; + + normalBgColor = "#292F38"; + normalTextColor = "#54626F"; + hoverBgColor = "#40444D"; + hoverTextColor = "#FDFDFD"; + pressedBgColor = "#404244"; + pressedTextColor = "#FDFDFD"; + checkedBgColor = "#44494F"; + checkedTextColor = "#FDFDFD"; + } + + //设置常规颜色 普通状态+加深状态 + void setColor(const QString &normalBgColor, + const QString &normalTextColor, + const QString &darkBgColor, + const QString &darkTextColor) { + this->normalBgColor = normalBgColor; + this->normalTextColor = normalTextColor; + this->hoverBgColor = darkBgColor; + this->hoverTextColor = darkTextColor; + this->pressedBgColor = darkBgColor; + this->pressedTextColor = darkTextColor; + this->checkedBgColor = darkBgColor; + this->checkedTextColor = darkTextColor; + } + }; + + + //初始化图形字体 + static void initFont(); + //设置引用图形字体文件索引 + static void setIconFontIndex(int index); + + //获取图形字体 + static QFont getIconFontAliBaBa(); + static QFont getIconFontAwesome(); + static QFont getIconFontAwesome6(); + static QFont getIconFontWeather(); + + //根据值获取图形字体类 + static IconHelper *getIconHelper(int icon); + + //设置图形字体到标签 + static void setIcon(QLabel *lab, int icon, quint32 size = 12); + //设置图形字体到按钮 + static void setIcon(QAbstractButton *btn, int icon, quint32 size = 12); + + //设置图形字体到图标 + static void setPixmap(QAbstractButton *btn, const QColor &color, + int icon, quint32 size = 12, + quint32 width = 15, quint32 height = 15, + int flags = Qt::AlignCenter); + //获取指定图形字体,可以指定文字大小,图片宽高,文字对齐 + static QPixmap getPixmap(const QColor &color, int icon, quint32 size = 12, + quint32 width = 15, quint32 height = 15, + int flags = Qt::AlignCenter); + + //指定导航面板样式,带图标和效果切换+悬停颜色+按下颜色+选中颜色 + static void setStyle(QWidget *widget, QList btns, QList icons, const StyleColor &styleColor); + static void setStyle(QWidget *widget, QList btns, QList icons, const StyleColor &styleColor); + static void setStyle(QWidget *widget, QList btns, QList icons, const StyleColor &styleColor); + + //默认构造函数,传入字体文件+字体名称 + explicit IconHelper(const QString &fontFile, const QString &fontName, QObject *parent = 0); + +protected: + bool eventFilter(QObject *watched, QEvent *event); + +private: + QFont iconFont; //图形字体 + QList btns; //按钮队列 + QList pixNormal; //正常图片队列 + QList pixHover; //悬停图片队列 + QList pixPressed; //按下图片队列 + QList pixChecked; //选中图片队列 + +private slots: + //按钮选中状态切换处理 + void toggled(bool checked); + +public: + //获取图形字体 + QFont getIconFont(); + + //设置图形字体到标签 + void setIcon1(QLabel *lab, int icon, quint32 size = 12); + //设置图形字体到按钮 + void setIcon1(QAbstractButton *btn, int icon, quint32 size = 12); + + //设置图形字体到图标 + void setPixmap1(QAbstractButton *btn, const QColor &color, + int icon, quint32 size = 12, + quint32 width = 15, quint32 height = 15, + int flags = Qt::AlignCenter); + //获取指定图形字体,可以指定文字大小,图片宽高,文字对齐 + QPixmap getPixmap1(const QColor &color, int icon, quint32 size = 12, + quint32 width = 15, quint32 height = 15, + int flags = Qt::AlignCenter); + + //指定导航面板样式,带图标和效果切换+悬停颜色+按下颜色+选中颜色 + void setStyle1(QWidget *widget, QList btns, QList icons, const StyleColor &styleColor); + void setStyle1(QWidget *widget, QList btns, QList icons, const StyleColor &styleColor); + void setStyle1(QWidget *widget, QList btns, QList icons, const StyleColor &styleColor); +}; + +#endif // ICONHELPER_H diff --git a/core_base/qrc/font.qrc b/core_base/qrc/font.qrc new file mode 100644 index 0000000..9f303b2 --- /dev/null +++ b/core_base/qrc/font.qrc @@ -0,0 +1,7 @@ + + + font/fontawesome-webfont.ttf + font/iconfont.ttf + font/pe-icon-set-weather.ttf + + diff --git a/core_base/qrc/font/fontawesome-webfont.ttf b/core_base/qrc/font/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 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 z 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 d0mz4wq1Qb+?5dP2!TLXyMjNLNDh^ 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 literal 0 HcmV?d00001 diff --git a/core_base/qrc/font/pe-icon-set-weather.ttf b/core_base/qrc/font/pe-icon-set-weather.ttf new file mode 100644 index 0000000000000000000000000000000000000000..eb6f8e503a8e2c6869f5f85f4813452c58655e86 GIT binary patch literal 81408 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 literal 0 HcmV?d00001 diff --git a/core_base/qrc/image.qrc b/core_base/qrc/image.qrc new file mode 100644 index 0000000..458c609 --- /dev/null +++ b/core_base/qrc/image.qrc @@ -0,0 +1,5 @@ + + + image/bg_novideo.png + + diff --git a/core_base/qrc/image/bg_novideo.png b/core_base/qrc/image/bg_novideo.png new file mode 100644 index 0000000000000000000000000000000000000000..510dfb8eaa5ceb11d35753cbf683482c4cd45ce9 GIT binary patch literal 1982 zcmV;v2SNCWP)y^ zl6(qaR%dbf%A|Oql6(eWYPMaA?z?L&GB#9_F97TS{7^|ge`Rt)umtK+6L7y#-luIOz2&U8xjVos%qD(VLfx9b&f;$62B3Ebbf(3xDD#?$~MUX8#rk6b6^`)#% zuS5r#%B9e~K>LE(psEr%Rb9$<6X<%etDMGJprP5frVKfOrZ;sBHo}{VE)u#RSxhJT zYVZpDIrxl`i|%9%zV>|FWzM+``(;?4s>?!jWZ6zz;TS)~xj=kZN&ezkg4-!N};3UkMwh#Dib(VqaHsCH1xb~w!TS+3v_*P$tS?|PP!;9r` zxP)g&Ug|zzXaV4}@x8e_-2$0I$rJAk+85izK09LaIe32}bu1HE-$VAKvx#0qHhXEu zxlSPOa|P{eRLqdlShsnx79DjK7fp?{&f=2hwawlR;kPeKrj4VIJF*JLyj+szh3Nk` z@EMMd7J?bK zI9CFmJYi&S20JyFUSh1>B*=ex%>&a11`0=kW;4T|y4G zp5afTH2cuRxSv##e<%*Kh4#MCokr_C?G@8c1gF{0p-*1Hr8 z(0f;@Bxjjy|M)C|W~}dJkI)y*L$zw6l6);_yOiZB1Lqb&!n1{JmiN$F=d?mn-d)m~ zfPFkdA30JO=cC)k1p1a`>$>oX!6fBUhRVbNTJpMT*ds}FWwg0oU{KP8&f667`<#SS zxPEFnQ*);Oz^ob3nl7Kk$J{xz)^nvyGm7B$?h8GCvJCemEjwXCb^(v(R>I<-HA2=o z^es-%@sfJhac(l<(a>D(eM)1^1#~3gvwVAKp=zxgAROl2&*|5UkIcAt0Cr@ucX#wa z>LCo!slX6Vwg{NZhhD`AV#pfZnOg~CUB416Y0U+6VZ+DVXJ%cfB%jh*`x9Zz1)zUQ z3!S;+Dqw#>SJW1FG`IlpQ5bv#@VU<7pfi`wrHyZ#1K;}orinJsm8EJn%GRK=<5EpI zu!+%K?|X#)ofhj*1?;J4HHmL?$YsvmoiTXJ41R$wU>6=D?1dZY3d)xf_8>v(vKF&; ziSwLvgAD|;OyL;!jD(f7;VGCi8Cq*+K7plo=Jsk+XYtG>1oS?U^?YNcDrNtd9V7lt z$GDl${5KrWuw9opm+oBKrt`h&)f#8i9-1K~JZKyg2faH8`EtWl16ncCE(stjUTz$~ z;QhBe@4p*CZZY^4K#o*oHMg#ilA|$LNJBwFwe6ePGit=WZ+OskrPKQV0d9UKRT2a0 Q)c^nh07*qoM6N<$f|O#g9{>OV literal 0 HcmV?d00001 diff --git a/core_base/qrc/qm.qrc b/core_base/qrc/qm.qrc new file mode 100644 index 0000000..d14db1a --- /dev/null +++ b/core_base/qrc/qm.qrc @@ -0,0 +1,6 @@ + + + qm/qt_zh_CN.qm + qm/widgets.qm + + diff --git a/core_base/quihelper.cpp b/core_base/quihelper.cpp new file mode 100644 index 0000000..e3090aa --- /dev/null +++ b/core_base/quihelper.cpp @@ -0,0 +1,1006 @@ +#include "quihelper.h" +#include "qnetworkinterface.h" +#include "qnetworkproxy.h" + +#define TIMEMS qPrintable(QTime::currentTime().toString("HH:mm:ss zzz")) + +int QUIHelper::getScreenIndex() +{ + //需要对多个屏幕进行处理 + int screenIndex = 0; +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) + int screenCount = qApp->screens().size(); +#else + int screenCount = qApp->desktop()->screenCount(); +#endif + + if (screenCount > 1) { + //找到当前鼠标所在屏幕 + QPoint pos = QCursor::pos(); + for (int i = 0; i < screenCount; ++i) { +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) + if (qApp->screens().at(i)->geometry().contains(pos)) { +#else + if (qApp->desktop()->screenGeometry(i).contains(pos)) { +#endif + screenIndex = i; + break; + } + } + } + return screenIndex; +} + +QRect QUIHelper::getScreenRect(bool available) +{ + QRect rect; + int screenIndex = QUIHelper::getScreenIndex(); + if (available) { +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) + rect = qApp->screens().at(screenIndex)->availableGeometry(); +#else + rect = qApp->desktop()->availableGeometry(screenIndex); +#endif + } else { +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) + rect = qApp->screens().at(screenIndex)->geometry(); +#else + rect = qApp->desktop()->screenGeometry(screenIndex); +#endif + } + return rect; +} + +qreal QUIHelper::getScreenRatio(bool devicePixel) +{ + qreal ratio = 1.0; + int screenIndex = getScreenIndex(); +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) + QScreen *screen = qApp->screens().at(screenIndex); + if (devicePixel) { + //需要开启 AA_EnableHighDpiScaling 属性才能正常获取 + ratio = screen->devicePixelRatio() * 100; + } else { + ratio = screen->logicalDotsPerInch(); + } +#else + //Qt4不能动态识别缩放更改后的值 + ratio = qApp->desktop()->screen(screenIndex)->logicalDpiX(); +#endif + return ratio / 96; +} + +QRect QUIHelper::checkCenterRect(QRect &rect, bool available) +{ + QRect deskRect = QUIHelper::getScreenRect(available); + int formWidth = rect.width(); + int formHeight = rect.height(); + int deskWidth = deskRect.width(); + int deskHeight = deskRect.height(); + int formX = deskWidth / 2 - formWidth / 2 + deskRect.x(); + int formY = deskHeight / 2 - formHeight / 2; + rect = QRect(formX, formY, formWidth, formHeight); + return deskRect; +} + +int QUIHelper::deskWidth() +{ + return getScreenRect().width(); +} + +int QUIHelper::deskHeight() +{ + return getScreenRect().height(); +} + +QSize QUIHelper::deskSize() +{ + return getScreenRect().size(); +} + +QWidget *QUIHelper::centerBaseForm = 0; +void QUIHelper::setFormInCenter(QWidget *form) +{ + int formWidth = form->width(); + int formHeight = form->height(); + + //如果=0表示采用系统桌面屏幕为参照 + QRect rect; + if (centerBaseForm == 0) { + rect = getScreenRect(); + } else { + rect = centerBaseForm->geometry(); + } + + int deskWidth = rect.width(); + int deskHeight = rect.height(); + QPoint movePoint(deskWidth / 2 - formWidth / 2 + rect.x(), deskHeight / 2 - formHeight / 2 + rect.y()); + form->move(movePoint); +} + +void QUIHelper::showForm(QWidget *form) +{ + setFormInCenter(form); + form->show(); + + //判断宽高是否超过了屏幕分辨率,超过了则最大化显示 + //qDebug() << TIMEMS << form->size() << deskSize(); + if (form->width() + 20 > deskWidth() || form->height() + 50 > deskHeight()) { + QMetaObject::invokeMethod(form, "showMaximized", Qt::QueuedConnection); + } +} + +QString QUIHelper::appName() +{ + //没有必要每次都获取,只有当变量为空时才去获取一次 + static QString name; + if (name.isEmpty()) { + name = qApp->applicationFilePath(); + //下面的方法主要为了过滤安卓的路径 lib程序名_armeabi-v7a/lib程序名_arm64-v8a + QStringList list = name.split("/"); + name = list.at(list.size() - 1).split(".").at(0); + name.replace("_armeabi-v7a", ""); + name.replace("_arm64-v8a", ""); + } + + return name; +} + +QString QUIHelper::appPath() +{ + static QString path; + if (path.isEmpty()) { +#ifdef Q_OS_ANDROID + //默认安卓根目录 + path = "/storage/emulated/0"; + //带上程序名称作为目录 前面加个0方便排序 + path = path + "/0" + appName(); +#else + path = qApp->applicationDirPath(); +#endif + } + + return path; +} + +QStringList QUIHelper::getLocalIPs() +{ + static QStringList ips; + if (ips.size() == 0) { +#ifdef Q_OS_WASM + ips << "127.0.0.1"; +#else + QList netInterfaces = QNetworkInterface::allInterfaces(); + foreach (QNetworkInterface netInterface, netInterfaces) { + //移除虚拟机和抓包工具的虚拟网卡 + QString humanReadableName = netInterface.humanReadableName().toLower(); + if (humanReadableName.startsWith("vmware network adapter") || humanReadableName.startsWith("npcap loopback adapter")) { + continue; + } + + //过滤当前网络接口 + bool flag = (netInterface.flags() == (QNetworkInterface::IsUp | QNetworkInterface::IsRunning | QNetworkInterface::CanBroadcast | QNetworkInterface::CanMulticast)); + if (!flag) { + continue; + } + + QList addrs = netInterface.addressEntries(); + foreach (QNetworkAddressEntry addr, addrs) { + //只取出IPV4的地址 + if (addr.ip().protocol() != QAbstractSocket::IPv4Protocol) { + continue; + } + + QString ip4 = addr.ip().toString(); + if (ip4 != "127.0.0.1") { + ips << ip4; + } + } + } +#endif + } + + return ips; +} + +QList QUIHelper::colors = QList(); +QList QUIHelper::getColorList() +{ + //备用颜色集合 可以自行添加 + if (colors.size() == 0) { + colors << QColor(0, 176, 180) << QColor(0, 113, 193) << QColor(255, 192, 0); + colors << QColor(72, 103, 149) << QColor(185, 87, 86) << QColor(0, 177, 125); + colors << QColor(214, 77, 84) << QColor(71, 164, 233) << QColor(34, 163, 169); + colors << QColor(59, 123, 156) << QColor(162, 121, 197) << QColor(72, 202, 245); + colors << QColor(0, 150, 121) << QColor(111, 9, 176) << QColor(250, 170, 20); + } + + return colors; +} + +QStringList QUIHelper::getColorNames() +{ + QList colors = getColorList(); + QStringList colorNames; + foreach (QColor color, colors) { + colorNames << color.name(); + } + return colorNames; +} + +QColor QUIHelper::getRandColor() +{ + QList colors = getColorList(); + int index = getRandValue(0, colors.size(), true); + return colors.at(index); +} + +void QUIHelper::initRand() +{ + //初始化随机数种子 + QTime t = QTime::currentTime(); + srand(t.msec() + t.second() * 1000); +} + +float QUIHelper::getRandFloat(float min, float max) +{ + double diff = fabs(max - min); + double value = (double)(rand() % 100) / 100; + value = min + value * diff; + return value; +} + +double QUIHelper::getRandValue(int min, int max, bool contansMin, bool contansMax) +{ + int value; +#if (QT_VERSION <= QT_VERSION_CHECK(5,10,0)) + //通用公式 a是起始值,n是整数的范围 + //int value = a + rand() % n; + if (contansMin) { + if (contansMax) { + value = min + 0 + (rand() % (max - min + 1)); + } else { + value = min + 0 + (rand() % (max - min + 0)); + } + } else { + if (contansMax) { + value = min + 1 + (rand() % (max - min + 0)); + } else { + value = min + 1 + (rand() % (max - min - 1)); + } + } +#else + if (contansMin) { + if (contansMax) { + value = QRandomGenerator::global()->bounded(min + 0, max + 1); + } else { + value = QRandomGenerator::global()->bounded(min + 0, max + 0); + } + } else { + if (contansMax) { + value = QRandomGenerator::global()->bounded(min + 1, max + 1); + } else { + value = QRandomGenerator::global()->bounded(min + 1, max + 0); + } + } +#endif + return value; +} + +QStringList QUIHelper::getRandPoint(int count, float mainLng, float mainLat, float dotLng, float dotLat) +{ + //随机生成点坐标 + QStringList points; + for (int i = 0; i < count; ++i) { + //0.00881415 0.000442928 +#if (QT_VERSION >= QT_VERSION_CHECK(5,10,0)) + float lngx = QRandomGenerator::global()->bounded(dotLng); + float latx = QRandomGenerator::global()->bounded(dotLat); +#else + float lngx = getRandFloat(dotLng / 10, dotLng); + float latx = getRandFloat(dotLat / 10, dotLat); +#endif + //需要先用精度转换成字符串 + QString lng2 = QString::number(mainLng + lngx, 'f', 8); + QString lat2 = QString::number(mainLat + latx, 'f', 8); + QString point = QString("%1,%2").arg(lng2).arg(lat2); + points << point; + } + + return points; +} + +int QUIHelper::getRangeValue(int oldMin, int oldMax, int oldValue, int newMin, int newMax) +{ + return (((oldValue - oldMin) * (newMax - newMin)) / (oldMax - oldMin)) + newMin; +} + +QString QUIHelper::getUuid() +{ + QString uuid = QUuid::createUuid().toString(); + uuid.replace("{", ""); + uuid.replace("}", ""); + return uuid; +} + +void QUIHelper::checkPath(const QString &dirName) +{ + //相对路径需要补全完整路径 + QString path = dirName; + if (path.startsWith("./")) { + path.replace(".", ""); + path = QUIHelper::appPath() + path; + } else if (!path.startsWith("/") && !path.contains(":/")) { + path = QUIHelper::appPath() + "/" + path; + } + + //目录不存在则新建 + QDir dir(path); + if (!dir.exists()) { + dir.mkpath(path); + } +} + +void QUIHelper::sleep(int msec) +{ + if (msec <= 0) { + return; + } + +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) + QThread::msleep(msec); +#else + QTime endTime = QTime::currentTime().addMSecs(msec); + while (QTime::currentTime() < endTime) { + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); + } +#endif +} + +void QUIHelper::setStyle() +{ + //打印下所有内置风格的名字 + qDebug() << TIMEMS << "QStyleFactory::keys" << QStyleFactory::keys(); + //设置内置风格 +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) + qApp->setStyle(QStyleFactory::create("Fusion")); +#else + qApp->setStyle(QStyleFactory::create("Cleanlooks")); +#endif + + //设置指定颜色 + QPalette palette; + palette.setBrush(QPalette::Window, QColor("#F0F0F0")); + qApp->setPalette(palette); +} + +QFont QUIHelper::addFont(const QString &fontFile, const QString &fontName) +{ + //判断图形字体是否存在,不存在则加入 + QFontDatabase fontDb; + if (!fontDb.families().contains(fontName)) { + int fontId = fontDb.addApplicationFont(fontFile); + QStringList listName = fontDb.applicationFontFamilies(fontId); + if (listName.size() == 0) { + qDebug() << QString("load %1 error").arg(fontName); + } + } + + //再次判断是否包含字体名称防止加载失败 + QFont font; + if (fontDb.families().contains(fontName)) { + font = QFont(fontName); +#if (QT_VERSION >= QT_VERSION_CHECK(4,8,0)) + font.setHintingPreference(QFont::PreferNoHinting); +#endif + } + + return font; +} + +void QUIHelper::setFont(int fontSize) +{ +#ifdef rk3399 + return; +#endif + //安卓套件在有些手机上默认字体不好看需要主动设置字体 + //网页套件需要主动加载中文字体才能正常显示中文 +#if (defined Q_OS_ANDROID) || (defined Q_OS_WASM) + QString fontFile = ":/font/DroidSansFallback.ttf"; + QString fontName = "Droid Sans Fallback"; + qApp->setFont(addFont(fontFile, fontName)); + return; +#endif + +#ifdef __arm__ + fontSize = 25; +#endif +#ifdef Q_OS_ANDROID + fontSize = 15; +#endif + + QFont font; + font.setFamily("MicroSoft Yahei"); + font.setPixelSize(fontSize); + qApp->setFont(font); +} + +void QUIHelper::setCode(bool utf8) +{ +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) + //如果想要控制台打印信息中文正常就注释掉这个设置 + if (utf8) { + QTextCodec *codec = QTextCodec::codecForName("utf-8"); + QTextCodec::setCodecForLocale(codec); + } +#else +#if _MSC_VER + QTextCodec *codec = QTextCodec::codecForName("gbk"); +#else + QTextCodec *codec = QTextCodec::codecForName("utf-8"); +#endif + QTextCodec::setCodecForLocale(codec); + QTextCodec::setCodecForCStrings(codec); + QTextCodec::setCodecForTr(codec); +#endif +} + +void QUIHelper::setTranslator(const QString &qmFile) +{ + //过滤下不存在的就不用设置了 + if (!QFile(qmFile).exists()) { + return; + } + + QTranslator *translator = new QTranslator(qApp); + if (translator->load(qmFile)) { + qApp->installTranslator(translator); + } +} + +#ifdef Q_OS_ANDROID +#if (QT_VERSION < QT_VERSION_CHECK(6,0,0)) +#include +#else +//Qt6中将相关类移到了core模块而且名字变了 +#include +#endif +#endif + +bool QUIHelper::checkPermission(const QString &permission) +{ +#ifdef Q_OS_ANDROID +#if (QT_VERSION >= QT_VERSION_CHECK(5,10,0) && QT_VERSION < QT_VERSION_CHECK(6,0,0)) + QtAndroid::PermissionResult result = QtAndroid::checkPermission(permission); + if (result == QtAndroid::PermissionResult::Denied) { + QtAndroid::requestPermissionsSync(QStringList() << permission); + result = QtAndroid::checkPermission(permission); + if (result == QtAndroid::PermissionResult::Denied) { + return false; + } + } +#else + QFuture result = QtAndroidPrivate::requestPermission(permission); + if (result.resultAt(0) == QtAndroidPrivate::PermissionResult::Denied) { + return false; + } +#endif +#endif + return true; +} + +void QUIHelper::initAndroidPermission() +{ + //可以把所有要动态申请的权限都写在这里 + checkPermission("android.permission.CALL_PHONE"); + checkPermission("android.permission.SEND_SMS"); + checkPermission("android.permission.CAMERA"); + checkPermission("android.permission.READ_EXTERNAL_STORAGE"); + checkPermission("android.permission.WRITE_EXTERNAL_STORAGE"); + + checkPermission("android.permission.ACCESS_COARSE_LOCATION"); + checkPermission("android.permission.BLUETOOTH"); + checkPermission("android.permission.BLUETOOTH_SCAN"); + checkPermission("android.permission.BLUETOOTH_CONNECT"); + checkPermission("android.permission.BLUETOOTH_ADVERTISE"); +} + +void QUIHelper::initAll(bool utf8, bool style, int fontSize) +{ + //初始化安卓权限 + QUIHelper::initAndroidPermission(); + //初始化随机数种子 + QUIHelper::initRand(); + //设置编码 + QUIHelper::setCode(utf8); + //设置字体 + QUIHelper::setFont(fontSize); + //设置样式风格 + if (style) { + QUIHelper::setStyle(); + } + + //设置翻译文件支持多个 + QUIHelper::setTranslator(":/qm/widgets.qm"); + QUIHelper::setTranslator(":/qm/qt_zh_CN.qm"); + QUIHelper::setTranslator(":/qm/designer_zh_CN.qm"); + + //设置不使用本地系统环境代理配置 + QNetworkProxyFactory::setUseSystemConfiguration(false); +} + +void QUIHelper::initMain(bool desktopSettingsAware, bool useOpenGLES) +{ + //设置是否应用操作系统设置比如字体 + QApplication::setDesktopSettingsAware(desktopSettingsAware); + +#ifdef Q_OS_ANDROID +#if (QT_VERSION >= QT_VERSION_CHECK(5,6,0)) + //开启高分屏缩放支持 + QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); +#endif +#else +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) + //不应用任何缩放 + QApplication::setAttribute(Qt::AA_Use96Dpi); +#endif +#endif + +#if (QT_VERSION >= QT_VERSION_CHECK(5,14,0)) + //高分屏缩放策略 + QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::Floor); +#endif + +#if (QT_VERSION >= QT_VERSION_CHECK(5,4,0)) + //win上获取显卡是否被禁用(禁用则必须启用OpenGLES) +#ifdef Q_OS_WIN + QProcess p; + QStringList args; + args << "path" << "win32_VideoController" << "get" << "name,Status"; + p.start("wmic", args); + p.waitForFinished(1000); + QString result = QString::fromLocal8Bit(p.readAllStandardOutput()); + result.replace("\r", ""); + result.replace("\n", ""); + result = result.simplified(); + result = result.trimmed(); + //Name Status Intel(R) UHD Graphics 630 OK + //Name Status Intel(R) UHD Graphics 630 Error + //QStringList list = result.split(" "); + if (result.contains("Error")) { + useOpenGLES = true; + } +#endif + + //设置opengl模式 AA_UseDesktopOpenGL(默认) AA_UseOpenGLES AA_UseSoftwareOpenGL + //在一些很旧的设备上或者对opengl支持很低的设备上需要使用AA_UseOpenGLES表示禁用硬件加速 + //如果开启的是AA_UseOpenGLES则无法使用硬件加速比如ffmpeg的dxva2 + if (useOpenGLES) { + QApplication::setAttribute(Qt::AA_UseOpenGLES); + } + + //设置opengl共享上下文 + QApplication::setAttribute(Qt::AA_ShareOpenGLContexts); +#endif +} + +QVector QUIHelper::msgTypes = QVector() << 0 << 1 << 2 << 3 << 4; +QVector QUIHelper::msgKeys = QVector() << QString::fromUtf8("发送") << QString::fromUtf8("接收") << QString::fromUtf8("解析") << QString::fromUtf8("错误") << QString::fromUtf8("提示"); +QVector QUIHelper::msgColors = QVector() << QColor("#3BA372") << QColor("#EE6668") << QColor("#9861B4") << QColor("#FA8359") << QColor("#22A3A9"); +QString QUIHelper::appendMsg(QTextEdit *textEdit, int type, const QString &data, int maxCount, int ¤tCount, bool clear, bool pause) +{ + if (clear) { + textEdit->clear(); + currentCount = 0; + return QString(); + } + + if (pause) { + return QString(); + } + + if (currentCount >= maxCount) { + textEdit->clear(); + currentCount = 0; + } + + //不同类型不同颜色显示 + QString strType; + int index = msgTypes.indexOf(type); + if (index >= 0) { + strType = msgKeys.at(index); + textEdit->setTextColor(msgColors.at(index)); + } + + //过滤回车换行符 + QString strData = data; + strData.replace("\r", ""); + strData.replace("\n", ""); + strData = QString("时间[%1] %2: %3").arg(TIMEMS).arg(strType).arg(strData); + textEdit->append(strData); + currentCount++; + return strData; +} + +void QUIHelper::setFramelessForm(QWidget *widgetMain, bool tool, bool top, bool menu) +{ +// widgetMain->setProperty("form", true); + widgetMain->setProperty("canMove", true); + + //根据设定逐个追加属性 +#ifdef __arm__ + widgetMain->setWindowFlags(Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint); +#else + widgetMain->setWindowFlags(Qt::FramelessWindowHint); +#endif + if (tool) { + widgetMain->setWindowFlags(widgetMain->windowFlags() | Qt::Tool); + } + if (top) { + widgetMain->setWindowFlags(widgetMain->windowFlags() | Qt::WindowStaysOnTopHint); + } + if (menu) { + //如果是其他系统比如neokylin会产生系统边框 +#ifdef Q_OS_WIN + widgetMain->setWindowFlags(widgetMain->windowFlags() | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); +#endif + } +} + +int QUIHelper::showMessageBox(const QString &text, int type, int closeSec, bool exec) +{ + int result = 0; + if (type == 0) { + showMessageBoxInfo(text, closeSec, exec); + } else if (type == 1) { + showMessageBoxError(text, closeSec, exec); + } else if (type == 2) { + result = showMessageBoxQuestion(text); + } + + return result; +} + +void QUIHelper::showMessageBoxInfo(const QString &text, int closeSec, bool exec) +{ + QMessageBox box(QMessageBox::Information, "提示", text); + box.setStandardButtons(QMessageBox::Yes); + box.setButtonText(QMessageBox::Yes, QString("确 定")); + box.exec(); + //QMessageBox::information(0, "提示", info, QMessageBox::Yes); +} + +void QUIHelper::showMessageBoxError(const QString &text, int closeSec, bool exec) +{ + QMessageBox box(QMessageBox::Critical, "错误", text); + box.setStandardButtons(QMessageBox::Yes); + box.setButtonText(QMessageBox::Yes, QString("确 定")); + box.exec(); + //QMessageBox::critical(0, "错误", info, QMessageBox::Yes); +} + +int QUIHelper::showMessageBoxQuestion(const QString &text) +{ + QMessageBox box(QMessageBox::Question, "询问", text); + box.setStandardButtons(QMessageBox::Yes | QMessageBox::No); + box.setButtonText(QMessageBox::Yes, QString("确 定")); + box.setButtonText(QMessageBox::No, QString("取 消")); + return box.exec(); + //return QMessageBox::question(0, "询问", info, QMessageBox::Yes | QMessageBox::No); +} + +void QUIHelper::initDialog(QFileDialog *dialog, const QString &title, const QString &acceptName, + const QString &dirName, bool native, int width, int height) +{ + //设置标题 + dialog->setWindowTitle(title); + //设置标签文本 + dialog->setLabelText(QFileDialog::Accept, acceptName); + dialog->setLabelText(QFileDialog::Reject, "取消(&C)"); + dialog->setLabelText(QFileDialog::LookIn, "查看"); + dialog->setLabelText(QFileDialog::FileName, "名称"); + dialog->setLabelText(QFileDialog::FileType, "类型"); + + //设置默认显示目录 + if (!dirName.isEmpty()) { + dialog->setDirectory(dirName); + } + + //设置对话框宽高 + if (width > 0 && height > 0) { +#ifdef Q_OS_ANDROID + bool horizontal = (QUIHelper::deskWidth() > QUIHelper::deskHeight()); + if (horizontal) { + width = QUIHelper::deskWidth() / 2; + height = QUIHelper::deskHeight() - 50; + } else { + width = QUIHelper::deskWidth() - 10; + height = QUIHelper::deskHeight() / 2; + } +#endif + dialog->setFixedSize(width, height); + } + + //设置是否采用本地对话框 + dialog->setOption(QFileDialog::DontUseNativeDialog, !native); + //设置只读可以取消右上角的新建按钮 + //dialog->setReadOnly(true); +} + +QString QUIHelper::getDialogResult(QFileDialog *dialog) +{ + QString result; + if (dialog->exec() == QFileDialog::Accepted) { + result = dialog->selectedFiles().first(); + } + return result; +} + +QString QUIHelper::getOpenFileName(const QString &filter, const QString &dirName, const QString &fileName, + bool native, int width, int height) +{ + QFileDialog dialog; + initDialog(&dialog, "打开文件", "选择(&S)", dirName, native, width, height); + + //设置文件类型 + if (!filter.isEmpty()) { + dialog.setNameFilter(filter); + } + + //设置默认文件名称 + dialog.selectFile(fileName); + return getDialogResult(&dialog); +} + +QString QUIHelper::getSaveFileName(const QString &filter, const QString &dirName, const QString &fileName, + bool native, int width, int height) +{ + QFileDialog dialog; + initDialog(&dialog, "保存文件", "保存(&S)", dirName, native, width, height); + + //设置文件类型 + if (!filter.isEmpty()) { + dialog.setNameFilter(filter); + } + + //设置默认文件名称 + dialog.selectFile(fileName); + //设置模态类型允许输入 + dialog.setWindowModality(Qt::WindowModal); + //设置置顶显示 + dialog.setWindowFlags(dialog.windowFlags() | Qt::WindowStaysOnTopHint); + return getDialogResult(&dialog); +} + +QString QUIHelper::getExistingDirectory(const QString &dirName, bool native, int width, int height) +{ + QFileDialog dialog; + initDialog(&dialog, "选择目录", "选择(&S)", dirName, native, width, height); + dialog.setOption(QFileDialog::ReadOnly); + //设置只显示目录 +#if (QT_VERSION < QT_VERSION_CHECK(6,0,0)) + dialog.setFileMode(QFileDialog::DirectoryOnly); +#endif + dialog.setOption(QFileDialog::ShowDirsOnly); + return getDialogResult(&dialog); +} + +QString QUIHelper::getXorEncryptDecrypt(const QString &value, char key) +{ + //矫正范围外的数据 + if (key < 0 || key >= 127) { + key = 127; + } + + //大概从5.9版本输出的加密密码字符串前面会加上 @String 字符 + QString result = value; + if (result.startsWith("@String")) { + result = result.mid(8, result.length() - 9); + } + + int size = result.size(); + for (int i = 0; i < size; ++i) { + result[i] = QChar(result.at(i).toLatin1() ^ key); + } + return result; +} + +quint8 QUIHelper::getOrCode(const QByteArray &data) +{ + int len = data.length(); + quint8 result = 0; + for (int i = 0; i < len; ++i) { + result ^= data.at(i); + } + + return result; +} + +quint8 QUIHelper::getCheckCode(const QByteArray &data) +{ + int len = data.length(); + quint8 temp = 0; + for (int i = 0; i < len; ++i) { + temp += data.at(i); + } + + return temp % 256; +} + +void QUIHelper::initTableView(QTableView *tableView, int rowHeight, bool headVisible, bool edit, bool stretchLast) +{ + //设置弱属性用于应用qss特殊样式 + tableView->setProperty("model", true); + //取消自动换行 + tableView->setWordWrap(false); + //超出文本不显示省略号 + tableView->setTextElideMode(Qt::ElideNone); + //奇数偶数行颜色交替 + tableView->setAlternatingRowColors(false); + //垂直表头是否可见 + tableView->verticalHeader()->setVisible(headVisible); + //选中一行表头是否加粗 + tableView->horizontalHeader()->setHighlightSections(false); + //最后一行拉伸填充 + tableView->horizontalHeader()->setStretchLastSection(stretchLast); + //行标题最小宽度尺寸 + tableView->horizontalHeader()->setMinimumSectionSize(0); + //行标题最小高度,等同于和默认行高一致 + tableView->horizontalHeader()->setFixedHeight(rowHeight); + //默认行高 + tableView->verticalHeader()->setDefaultSectionSize(rowHeight); + //选中时一行整体选中 + tableView->setSelectionBehavior(QAbstractItemView::SelectRows); + //只允许选择单个 + tableView->setSelectionMode(QAbstractItemView::SingleSelection); + + //表头不可单击 +#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0)) + tableView->horizontalHeader()->setSectionsClickable(false); +#else + tableView->horizontalHeader()->setClickable(false); +#endif + + //鼠标按下即进入编辑模式 + if (edit) { + tableView->setEditTriggers(QAbstractItemView::CurrentChanged | QAbstractItemView::DoubleClicked); + } else { + tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); + } +} + +void QUIHelper::openFile(const QString &fileName, const QString &msg) +{ +#ifdef __arm__ + return; +#endif + //文件不存在则不用处理 + if (!QFile(fileName).exists()) { + return; + } + if (QUIHelper::showMessageBoxQuestion(msg + "成功, 确定现在就打开吗?") == QMessageBox::Yes) { + QString url = QString("file:///%1").arg(fileName); + QDesktopServices::openUrl(QUrl(url, QUrl::TolerantMode)); + } +} + +bool QUIHelper::checkIniFile(const QString &iniFile) +{ + //如果配置文件大小为0,则以初始值继续运行,并生成配置文件 + QFile file(iniFile); + if (file.size() == 0) { + return false; + } + + //如果配置文件不完整,则以初始值继续运行,并生成配置文件 + if (file.open(QFile::ReadOnly)) { + bool ok = true; + while (!file.atEnd()) { + QString line = file.readLine(); + line.replace("\r", ""); + line.replace("\n", ""); + QStringList list = line.split("="); + + if (list.size() == 2) { + QString key = list.at(0); + QString value = list.at(1); + if (value.isEmpty()) { + qDebug() << TIMEMS << "ini node no value" << key; + ok = false; + break; + } + } + } + + if (!ok) { + return false; + } + } else { + return false; + } + + return true; +} + +QString QUIHelper::cutString(const QString &text, int len, int left, int right, bool file, const QString &mid) +{ + //如果指定了字符串分割则表示是文件名需要去掉拓展名 + QString result = text; + if (file && result.contains(".")) { + int index = result.lastIndexOf("."); + result = result.mid(0, index); + } + + //最终字符串格式为 前缀字符...后缀字符 + if (result.length() > len) { + result = QString("%1%2%3").arg(result.left(left)).arg(mid).arg(result.right(right)); + } + + return result; +} + +QRect QUIHelper::getCenterRect(const QSize &imageSize, const QRect &widgetRect, int borderWidth, int scaleMode) +{ + QSize newSize = imageSize; + QSize widgetSize = widgetRect.size() - QSize(borderWidth * 1, borderWidth * 1); + + if (scaleMode == 0) { + if (newSize.width() > widgetSize.width() || newSize.height() > widgetSize.height()) { + newSize.scale(widgetSize, Qt::KeepAspectRatio); + } + } else if (scaleMode == 1) { + newSize.scale(widgetSize, Qt::KeepAspectRatio); + } else { + newSize = widgetSize; + } + + int x = widgetRect.center().x() - newSize.width() / 2; + int y = widgetRect.center().y() - newSize.height() / 2; + //不是2的倍数需要偏移1像素 + x += (x % 2 == 0 ? 1 : 0); + y += (y % 2 == 0 ? 1 : 0); + return QRect(x, y, newSize.width(), newSize.height()); +} + +void QUIHelper::getScaledImage(QImage &image, const QSize &widgetSize, int scaleMode, bool fast) +{ + Qt::TransformationMode mode = fast ? Qt::FastTransformation : Qt::SmoothTransformation; + if (scaleMode == 0) { + if (image.width() > widgetSize.width() || image.height() > widgetSize.height()) { + image = image.scaled(widgetSize, Qt::KeepAspectRatio, mode); + } + } else if (scaleMode == 1) { + image = image.scaled(widgetSize, Qt::KeepAspectRatio, mode); + } else { + image = image.scaled(widgetSize, Qt::IgnoreAspectRatio, mode); + } +} + +QString QUIHelper::getTimeString(qint64 time) +{ + time = time / 1000; + QString min = QString("%1").arg(time / 60, 2, 10, QChar('0')); + QString sec = QString("%2").arg(time % 60, 2, 10, QChar('0')); + return QString("%1:%2").arg(min).arg(sec); +} + +QString QUIHelper::getTimeString(QElapsedTimer timer) +{ + return QString::number((float)timer.elapsed() / 1000, 'f', 3); +} + +QString QUIHelper::getSizeString(quint64 size) +{ + float num = size; + QStringList list; + list << "KB" << "MB" << "GB" << "TB"; + + QString unit("bytes"); + QStringListIterator i(list); + while (num >= 1024.0 && i.hasNext()) { + unit = i.next(); + num /= 1024.0; + } + + return QString("%1 %2").arg(QString::number(num, 'f', 2)).arg(unit); +} diff --git a/core_base/quihelper.h b/core_base/quihelper.h new file mode 100644 index 0000000..d0d79a9 --- /dev/null +++ b/core_base/quihelper.h @@ -0,0 +1,152 @@ +#ifndef QUIHELPER2_H +#define QUIHELPER2_H + +#include "head.h" + +class QUIHelper +{ +public: + //获取当前鼠标所在屏幕索引/区域尺寸/缩放系数 + static int getScreenIndex(); + static QRect getScreenRect(bool available = true); + static qreal getScreenRatio(bool devicePixel = false); + //矫正当前鼠标所在屏幕居中尺寸 + static QRect checkCenterRect(QRect &rect, bool available = true); + + //获取桌面宽度高度+居中显示 + static int deskWidth(); + static int deskHeight(); + static QSize deskSize(); + + //居中显示窗体 + //定义标志位指定是以桌面为参照还是主程序界面为参照 + static QWidget *centerBaseForm; + static void setFormInCenter(QWidget *form); + static void showForm(QWidget *form); + + //程序文件名称+当前所在路径 + static QString appName(); + static QString appPath(); + + //获取本地网卡IP集合 + static QStringList getLocalIPs(); + + //获取内置颜色集合 + static QList colors; + static QList getColorList(); + static QStringList getColorNames(); + //随机获取颜色集合中的颜色 + static QColor getRandColor(); + + //初始化随机数种子 + static void initRand(); + //获取随机小数 + static float getRandFloat(float min, float max); + //获取随机数,指定最小值和最大值 + static double getRandValue(int min, int max, bool contansMin = false, bool contansMax = false); + //获取范围值随机经纬度集合 + static QStringList getRandPoint(int count, float mainLng, float mainLat, float dotLng, float dotLat); + //根据旧的范围值和值计算新的范围值对应的值 + static int getRangeValue(int oldMin, int oldMax, int oldValue, int newMin, int newMax); + + //获取uuid + static QString getUuid(); + //校验目录 + static void checkPath(const QString &dirName); + //延时 + static void sleep(int msec); + + //设置Qt自带样式 + static void setStyle(); + //设置字体 + static QFont addFont(const QString &fontFile, const QString &fontName); + static void setFont(int fontSize = 12); + //设置编码 + static void setCode(bool utf8 = true); + //设置翻译文件 + static void setTranslator(const QString &qmFile); + + //动态设置权限 + static bool checkPermission(const QString &permission); + //申请安卓权限 + static void initAndroidPermission(); + + //一次性设置所有包括编码样式字体等 + static void initAll(bool utf8 = true, bool style = true, int fontSize = 13); + //初始化main函数最前面执行的一段代码 + static void initMain(bool desktopSettingsAware = true, bool useOpenGLES = false); + + //插入消息 + static QVector msgTypes; + static QVector msgKeys; + static QVector msgColors; + static QString appendMsg(QTextEdit *textEdit, int type, const QString &data, + int maxCount, int ¤tCount, + bool clear = false, bool pause = false); + + //设置无边框 + static void setFramelessForm(QWidget *widgetMain, bool tool = false, bool top = false, bool menu = true); + + //弹出框 + static int showMessageBox(const QString &text, int type = 0, int closeSec = 0, bool exec = false); + //弹出消息框 + static void showMessageBoxInfo(const QString &text, int closeSec = 0, bool exec = false); + //弹出错误框 + static void showMessageBoxError(const QString &text, int closeSec = 0, bool exec = false); + //弹出询问框 + static int showMessageBoxQuestion(const QString &text); + + //为什么还要自定义对话框因为可控宽高和汉化对应文本等 + //初始化对话框文本 + static void initDialog(QFileDialog *dialog, const QString &title, const QString &acceptName, + const QString &dirName, bool native, int width, int height); + //拿到对话框结果 + static QString getDialogResult(QFileDialog *dialog); + //选择文件对话框 + static QString getOpenFileName(const QString &filter = QString(), + const QString &dirName = QString(), + const QString &fileName = QString(), + bool native = false, int width = 900, int height = 600); + //保存文件对话框 + static QString getSaveFileName(const QString &filter = QString(), + const QString &dirName = QString(), + const QString &fileName = QString(), + bool native = false, int width = 900, int height = 600); + //选择目录对话框 + static QString getExistingDirectory(const QString &dirName = QString(), + bool native = false, int width = 900, int height = 600); + + //异或加密-只支持字符,如果是中文需要将其转换base64编码 + static QString getXorEncryptDecrypt(const QString &value, char key); + //异或校验 + static quint8 getOrCode(const QByteArray &data); + //计算校验码 + static quint8 getCheckCode(const QByteArray &data); + + //初始化表格 + static void initTableView(QTableView *tableView, int rowHeight = 25, + bool headVisible = false, bool edit = false, + bool stretchLast = true); + //打开文件带提示框 + static void openFile(const QString &fileName, const QString &msg); + + //检查ini配置文件 + static bool checkIniFile(const QString &iniFile); + + //首尾截断字符串显示 + static QString cutString(const QString &text, int len, int left, int right, bool file, const QString &mid = "..."); + + //传入图片尺寸和窗体区域及边框大小返回居中区域(scaleMode: 0-自动调整 1-等比缩放 2-拉伸填充) + static QRect getCenterRect(const QSize &imageSize, const QRect &widgetRect, int borderWidth = 2, int scaleMode = 0); + //传入图片尺寸和窗体尺寸及缩放策略返回合适尺寸(scaleMode: 0-自动调整 1-等比缩放 2-拉伸填充) + static void getScaledImage(QImage &image, const QSize &widgetSize, int scaleMode = 0, bool fast = true); + + //毫秒数转时间 00:00 + static QString getTimeString(qint64 time); + //用时时间转秒数 + static QString getTimeString(QElapsedTimer timer); + //文件大小转 KB MB GB TB + static QString getSizeString(quint64 size); +}; + +#endif // QUIHELPER2_H diff --git a/main.cpp b/main.cpp index 8b5c008..8e276fc 100644 --- a/main.cpp +++ b/main.cpp @@ -3,10 +3,15 @@ #include #include #include "widget/logindialog.h" +#include "quihelper.h" int main(int argc, char *argv[]) { + QUIHelper::initMain(); QApplication app(argc, argv); + QUIHelper::setFont(); + QUIHelper::setCode(); + QString appDir = QApplication::applicationDirPath(); QTranslator translator; @@ -22,6 +27,7 @@ int main(int argc, char *argv[]) MainWindow w; w.SetUserInfo(login.GetUserInfo()); w.LoadTrendsData(); + QUIHelper::setFormInCenter(&login); w.show(); return app.exec(); } diff --git a/qss.qrc b/qss.qrc new file mode 100644 index 0000000..c5219ef --- /dev/null +++ b/qss.qrc @@ -0,0 +1,28 @@ + + + qss/blacksoft.css + qss/blacksoft/add_bottom.png + qss/blacksoft/add_left.png + qss/blacksoft/add_right.png + qss/blacksoft/add_top.png + qss/blacksoft/arrow_bottom.png + qss/blacksoft/arrow_left.png + qss/blacksoft/arrow_right.png + qss/blacksoft/arrow_top.png + qss/blacksoft/branch_close.png + qss/blacksoft/branch_open.png + qss/blacksoft/calendar_nextmonth.png + qss/blacksoft/calendar_prevmonth.png + qss/blacksoft/checkbox_checked.png + qss/blacksoft/checkbox_checked_disable.png + qss/blacksoft/checkbox_parcial.png + qss/blacksoft/checkbox_parcial_disable.png + qss/blacksoft/checkbox_unchecked.png + qss/blacksoft/checkbox_unchecked_disable.png + qss/blacksoft/menu_checked.png + qss/blacksoft/radiobutton_checked.png + qss/blacksoft/radiobutton_checked_disable.png + qss/blacksoft/radiobutton_unchecked.png + qss/blacksoft/radiobutton_unchecked_disable.png + + diff --git a/qss/blacksoft.css b/qss/blacksoft.css new file mode 100644 index 0000000..6780634 --- /dev/null +++ b/qss/blacksoft.css @@ -0,0 +1,694 @@ +QPalette{background:#444444;}*{outline:0px;color:#DCDCDC;} + +QGraphicsView{ +border:1px solid #242424; +qproperty-backgroundBrush:#444444; +} + +QWidget[form="true"],QLabel[frameShape="1"]{ +border:1px solid #242424; +border-radius:0px; +} + +QWidget[form="bottom"]{ +background:#484848; +} + +QWidget[form="bottom"] .QFrame{ +border:1px solid #DCDCDC; +} + +QWidget[form="bottom"] QLabel,QWidget[form="title"] QLabel{ +border-radius:0px; +color:#DCDCDC; +background:none; +border-style:none; +} + +QWidget[form="title"],QWidget[nav="left"],QWidget[nav="top"] QAbstractButton{ +border-style:none; +border-radius:0px; +padding:5px; +color:#DCDCDC; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QWidget[nav="top"] QAbstractButton:hover,QWidget[nav="top"] QAbstractButton:pressed,QWidget[nav="top"] QAbstractButton:checked{ +border-style:solid; +border-width:0px 0px 2px 0px; +padding:4px 4px 2px 4px; +border-color:#AAAAAA; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} + +QWidget[nav="left"] QAbstractButton{ +border-radius:0px; +color:#DCDCDC; +background:none; +border-style:none; +} + +QWidget[nav="left"] QAbstractButton:hover{ +color:#FFFFFF; +background-color:#AAAAAA; +} + +QWidget[nav="left"] QAbstractButton:checked,QWidget[nav="left"] QAbstractButton:pressed{ +color:#DCDCDC; +border-style:solid; +border-width:0px 0px 0px 2px; +padding:4px 4px 4px 2px; +border-color:#AAAAAA; +background-color:#444444; +} + +QWidget[video="true"] QLabel{ +color:#DCDCDC; +border:1px solid #242424; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QWidget[video="true"] QLabel:focus{ +border:1px solid #AAAAAA; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} + +QLineEdit:read-only{ +background-color:#484848; +} + +QLineEdit,QTextEdit,QPlainTextEdit,QSpinBox,QDoubleSpinBox,QComboBox,QDateEdit,QTimeEdit,QDateTimeEdit{ +border:1px solid #242424; +border-radius:3px; +padding:2px; +background:none; +selection-background-color:#AAAAAA; +selection-color:#FFFFFF; +} + +QLineEdit:focus,QTextEdit:focus,QPlainTextEdit:focus,QSpinBox:focus,QDoubleSpinBox:focus,QComboBox:focus,QDateEdit:focus,QTimeEdit:focus,QDateTimeEdit:focus,QLineEdit:hover,QTextEdit:hover,QPlainTextEdit:hover,QSpinBox:hover,QDoubleSpinBox:hover,QComboBox:hover,QDateEdit:hover,QTimeEdit:hover,QDateTimeEdit:hover{ +border:1px solid #242424; +} + +QLineEdit[echoMode="2"]{ +lineedit-password-character:9679; +} + +.QFrame{ +border:1px solid #242424; +border-radius:3px; +} + +.QGroupBox{ +border:1px solid #242424; +border-radius:5px; +margin-top:9px; +} + +.QGroupBox::title{ +subcontrol-origin:margin; +position:relative; +left:10px; +} + +.QPushButton,.QToolButton{ +border-style:none; +border:1px solid #242424; +color:#DCDCDC; +padding:5px; +min-height:15px; +border-radius:5px; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +.QPushButton:hover,.QToolButton:hover{ +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} + +.QPushButton:pressed,.QToolButton:pressed{ +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +.QToolButton::menu-indicator{ +image:None; +} + +QToolButton#btnMenu,QPushButton#btnMenu_Min,QPushButton#btnMenu_Max,QPushButton#btnMenu_Close{ +border-radius:3px; +color:#DCDCDC; +padding:3px; +margin:0px; +background:none; +border-style:none; +} + +QToolButton#btnMenu:hover,QPushButton#btnMenu_Min:hover,QPushButton#btnMenu_Max:hover{ +color:#FFFFFF; +margin:1px 1px 2px 1px; +background-color:rgba(51,127,209,230); +} + +QPushButton#btnMenu_Close:hover{ +color:#FFFFFF; +margin:1px 1px 2px 1px; +background-color:rgba(238,0,0,128); +} + +QRadioButton::indicator{ +width:15px; +height:15px; +} + +QRadioButton::indicator::unchecked{ +image:url(:/qss/blacksoft/radiobutton_unchecked.png); +} + +QRadioButton::indicator::unchecked:disabled{ +image:url(:/qss/blacksoft/radiobutton_unchecked_disable.png); +} + +QRadioButton::indicator::checked{ +image:url(:/qss/blacksoft/radiobutton_checked.png); +} + +QRadioButton::indicator::checked:disabled{ +image:url(:/qss/blacksoft/radiobutton_checked_disable.png); +} + +QGroupBox::indicator,QTreeView::indicator,QListView::indicator,QTableView::indicator{ +padding:0px 0px 0px 0px; +} + +QCheckBox::indicator,QGroupBox::indicator,QTreeView::indicator,QListView::indicator,QTableView::indicator{ +width:13px; +height:13px; +} + +QCheckBox::indicator:unchecked,QGroupBox::indicator:unchecked,QTreeView::indicator:unchecked,QListView::indicator:unchecked,QTableView::indicator:unchecked{ +image:url(:/qss/blacksoft/checkbox_unchecked.png); +} + +QCheckBox::indicator:unchecked:disabled,QGroupBox::indicator:unchecked:disabled,QTreeView::indicator:unchecked:disabled,QListView::indicator:unchecked:disabled,QTableView::indicator:unchecked:disabled{ +image:url(:/qss/blacksoft/checkbox_unchecked_disable.png); +} + +QCheckBox::indicator:checked,QGroupBox::indicator:checked,QTreeView::indicator:checked,QListView::indicator:checked,QTableView::indicator:checked{ +image:url(:/qss/blacksoft/checkbox_checked.png); +} + +QCheckBox::indicator:checked:disabled,QGroupBox::indicator:checked:disabled,QTreeView::indicator:checked:disabled,QListView::indicator:checked:disabled,QTableView::indicator:checked:disabled{ +image:url(:/qss/blacksoft/checkbox_checked_disable.png); +} + +QCheckBox::indicator:indeterminate,QGroupBox::indicator:indeterminate,QTreeView::indicator:indeterminate,QListView::indicator:indeterminate,QTableView::indicator:indeterminate{ +image:url(:/qss/blacksoft/checkbox_parcial.png); +} + +QCheckBox::indicator:indeterminate:disabled,QGroupBox::indicator:indeterminate:disabled,QTreeView::indicator:indeterminate:disabled,QListView::indicator:indeterminate:disabled,QTableView::indicator:indeterminate:disabled{ +image:url(:/qss/blacksoft/checkbox_parcial_disable.png); +} + +QTimeEdit::up-button,QDateEdit::up-button,QDateTimeEdit::up-button,QDoubleSpinBox::up-button,QSpinBox::up-button{ +image:url(:/qss/blacksoft/add_top.png); +width:10px; +height:10px; +padding:2px 5px 0px 0px; +} + +QTimeEdit::down-button,QDateEdit::down-button,QDateTimeEdit::down-button,QDoubleSpinBox::down-button,QSpinBox::down-button{ +image:url(:/qss/blacksoft/add_bottom.png); +width:10px; +height:10px; +padding:0px 5px 2px 0px; +} + +QTimeEdit::up-button:pressed,QDateEdit::up-button:pressed,QDateTimeEdit::up-button:pressed,QDoubleSpinBox::up-button:pressed,QSpinBox::up-button:pressed{ +top:-2px; +} + +QTimeEdit::down-button:pressed,QDateEdit::down-button:pressed,QDateTimeEdit::down-button:pressed,QDoubleSpinBox::down-button:pressed,QSpinBox::down-button:pressed,QSpinBox::down-button:pressed{ +bottom:-2px; +} + +QComboBox::down-arrow,QDateEdit[calendarPopup="true"]::down-arrow,QTimeEdit[calendarPopup="true"]::down-arrow,QDateTimeEdit[calendarPopup="true"]::down-arrow{ +image:url(:/qss/blacksoft/add_bottom.png); +width:10px; +height:10px; +right:2px; +} + +QComboBox::drop-down,QDateEdit::drop-down,QTimeEdit::drop-down,QDateTimeEdit::drop-down{ +subcontrol-origin:padding; +subcontrol-position:top right; +width:15px; +border-left-width:0px; +border-left-style:solid; +border-top-right-radius:3px; +border-bottom-right-radius:3px; +border-left-color:#242424; +} + +QComboBox::drop-down:on{ +top:1px; +} + +QMenuBar::item{ +color:#DCDCDC; +background-color:#484848; +margin:0px; +padding:3px 10px; +} + +QMenu,QMenuBar,QMenu:disabled,QMenuBar:disabled{ +color:#DCDCDC; +background-color:#484848; +border:1px solid #242424; +margin:0px; +} + +QMenu::item{ +padding:3px 20px; +} + +QMenu::indicator{ +width:20px; +height:13px; +} + +QMenu::indicator::checked{ +image:url(:/qss/blacksoft/menu_checked.png); +} + +QMenu::right-arrow{ +image:url(:/qss/blacksoft/arrow_right.png); +width:13px; +height:13px; +padding:0px 3px 0px 0px; +} + +QMenu::item:selected,QMenuBar::item:selected{ +color:#DCDCDC; +border:0px solid #242424; +background:#646464; +} + +QMenu::separator{ +height:1px; +background:#242424; +} + +QProgressBar{ +min-height:10px; +background:#484848; +border-radius:5px; +text-align:center; +border:1px solid #484848; +} + +QProgressBar:chunk{ +border-radius:5px; +background-color:#242424; +} + +QSlider::groove:horizontal{ +height:8px; +border-radius:4px; +background:#484848; +} + +QSlider::add-page:horizontal{ +height:8px; +border-radius:4px; +background:#484848; +} + +QSlider::sub-page:horizontal{ +height:8px; +border-radius:4px; +background:#242424; +} + +QSlider::handle:horizontal{ +width:13px; +margin-top:-3px; +margin-bottom:-3px; +border-radius:6px; +background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #444444,stop:0.8 #242424); +} + +QSlider::groove:vertical{ +width:8px; +border-radius:4px; +background:#484848; +} + +QSlider::add-page:vertical{ +width:8px; +border-radius:4px; +background:#242424; +} + +QSlider::sub-page:vertical{ +width:8px; +border-radius:4px; +background:#484848; +} + +QSlider::handle:vertical{ +height:14px; +margin-left:-3px; +margin-right:-3px; +border-radius:6px; +background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #444444,stop:0.8 #242424); +} + +QScrollBar:horizontal{ +background:#484848; +padding:0px; +border-radius:6px; +max-height:12px; +} + +QScrollBar::handle:horizontal{ +background:#242424; +min-width:50px; +border-radius:6px; +} + +QScrollBar::handle:horizontal:hover{ +background:#AAAAAA; +} + +QScrollBar::handle:horizontal:pressed{ +background:#AAAAAA; +} + +QScrollBar::add-page:horizontal{ +background:none; +} + +QScrollBar::sub-page:horizontal{ +background:none; +} + +QScrollBar::add-line:horizontal{ +background:none; +} + +QScrollBar::sub-line:horizontal{ +background:none; +} + +QScrollBar:vertical{ +background:#484848; +padding:0px; +border-radius:6px; +max-width:12px; +} + +QScrollBar::handle:vertical{ +background:#242424; +min-height:50px; +border-radius:6px; +} + +QScrollBar::handle:vertical:hover{ +background:#AAAAAA; +} + +QScrollBar::handle:vertical:pressed{ +background:#AAAAAA; +} + +QScrollBar::add-page:vertical{ +background:none; +} + +QScrollBar::sub-page:vertical{ +background:none; +} + +QScrollBar::add-line:vertical{ +background:none; +} + +QScrollBar::sub-line:vertical{ +background:none; +} + +QScrollArea{ +border:0px; +} + +QTreeView,QListView,QTableView,QTabWidget::pane{ +border:1px solid #242424; +selection-background-color:#646464; +selection-color:#DCDCDC; +alternate-background-color:#525252; +gridline-color:#242424; +} + +QTreeView::branch:closed:has-children{ +margin:4px; +border-image:url(:/qss/blacksoft/branch_open.png); +} + +QTreeView::branch:open:has-children{ +margin:4px; +border-image:url(:/qss/blacksoft/branch_close.png); +} + +QTreeView,QListView,QTableView,QSplitter::handle,QTreeView::branch{ +background:#444444; +} + +QTableView::item:selected,QListView::item:selected,QTreeView::item:selected{ +color:#DCDCDC; +background:#383838; +} + +QTableView::item:hover,QListView::item:hover,QTreeView::item:hover,QHeaderView,QHeaderView::section,QTableCornerButton:section{ +color:#DCDCDC; +background:#525252; +} + +QTableView::item,QListView::item,QTreeView::item{ +padding:1px; +margin:0px; +border:0px; +} + +QHeaderView::section,QTableCornerButton:section{ +padding:3px; +margin:0px; +border:1px solid #242424; +border-left-width:0px; +border-right-width:1px; +border-top-width:0px; +border-bottom-width:1px; +} + +QTabBar::tab{ +border:1px solid #242424; +color:#DCDCDC; +margin:0px; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} + +QTabBar::tab:selected{ +border-style:solid; +border-color:#AAAAAA; +background:#444444; +} + +QTabBar::tab:top,QTabBar::tab:bottom{ +padding:3px 8px 3px 8px; +} + +QTabBar::tab:left,QTabBar::tab:right{ +padding:8px 3px 8px 3px; +} + +QTabBar::tab:top:selected{ +border-width:2px 0px 0px 0px; +} + +QTabBar::tab:right:selected{ +border-width:0px 0px 0px 2px; +} + +QTabBar::tab:bottom:selected{ +border-width:0px 0px 2px 0px; +} + +QTabBar::tab:left:selected{ +border-width:0px 2px 0px 0px; +} + +QTabBar::tab:first:top:selected,QTabBar::tab:first:bottom:selected{ +border-left-width:1px; +border-left-color:#242424; +} + +QTabBar::tab:first:left:selected,QTabBar::tab:first:right:selected{ +border-top-width:1px; +border-top-color:#242424; +} + +QTabBar::tab:last:top:selected,QTabBar::tab:last:bottom:selected{ +border-right-width:1px; +border-right-color:#242424; +} + +QTabBar::tab:last:left:selected,QTabBar::tab:last:right:selected{ +border-bottom-width:1px; +border-bottom-color:#242424; +} + +QStatusBar::item{ +border:0px solid #484848; +border-radius:3px; +} + +QToolBox::tab,QWidget[form="panel"]{ +padding:3px; +border-radius:5px; +color:#DCDCDC; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QWidget[flag="paneltitle"]{ +border-bottom-left-radius:0px; +border-bottom-right-radius:0px; +} + +QWidget[flag="panelcontrol"]{ +border-top-width:0px; +border-top-left-radius:0px; +border-top-right-radius:0px; +} + +QToolTip{ +border:0px solid #DCDCDC; +padding:1px; +color:#DCDCDC; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QToolBox::tab:selected{ +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); +} + +QPrintPreviewDialog QToolButton{ +border:0px solid #DCDCDC; +border-radius:0px; +margin:0px; +padding:3px; +background:none; +} + +QColorDialog QPushButton,QFileDialog QPushButton{ +min-width:80px; +} + +QToolButton#qt_calendar_prevmonth{ +icon-size:0px; +min-width:20px; +image:url(:/qss/blacksoft/calendar_prevmonth.png); +} + +QToolButton#qt_calendar_nextmonth{ +icon-size:0px; +min-width:20px; +image:url(:/qss/blacksoft/calendar_nextmonth.png); +} + +QToolButton#qt_calendar_prevmonth,QToolButton#qt_calendar_nextmonth,QToolButton#qt_calendar_monthbutton,QToolButton#qt_calendar_yearbutton{ +border:0px solid #DCDCDC; +border-radius:3px; +margin:3px 3px 3px 3px; +padding:3px; +background:none; +} + +QToolButton#qt_calendar_prevmonth:hover,QToolButton#qt_calendar_nextmonth:hover,QToolButton#qt_calendar_monthbutton:hover,QToolButton#qt_calendar_yearbutton:hover,QToolButton#qt_calendar_prevmonth:pressed,QToolButton#qt_calendar_nextmonth:pressed,QToolButton#qt_calendar_monthbutton:pressed,QToolButton#qt_calendar_yearbutton:pressed{ +border:1px solid #242424; +} + +QCalendarWidget QSpinBox#qt_calendar_yearedit{ +margin:2px; +} + +QCalendarWidget QToolButton::menu-indicator{ +image:None; +} + +QCalendarWidget QTableView{ +border-width:0px; +} + +QCalendarWidget QWidget#qt_calendar_navigationbar{ +border:1px solid #242424; +border-width:1px 1px 0px 1px; +background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838); +} + +QTableView[model="true"]::item{ +padding:0px; +margin:0px; +} + +QTableView QLineEdit,QTableView QComboBox,QTableView QSpinBox,QTableView QDoubleSpinBox,QTableView QDateEdit,QTableView QTimeEdit,QTableView QDateTimeEdit{ +border-width:0px; +border-radius:0px; +} + +QTableView QLineEdit:focus,QTableView QComboBox:focus,QTableView QSpinBox:focus,QTableView QDoubleSpinBox:focus,QTableView QDateEdit:focus,QTableView QTimeEdit:focus,QTableView QDateTimeEdit:focus{ +border-width:0px; +border-radius:0px; +} + +QLineEdit,QTextEdit,QPlainTextEdit,QSpinBox,QDoubleSpinBox,QComboBox,QDateEdit,QTimeEdit,QDateTimeEdit{ +background:#444444; +} + +QTabWidget::pane:top{top:-1px;} +QTabWidget::pane:bottom{bottom:-1px;} +QTabWidget::pane:left{right:-1px;} +QTabWidget::pane:right{left:-1px;} + +QDialog,QDial,#QUIWidgetMain{ +background-color:#444444; +color:#DCDCDC; +} + +QDialogButtonBox>QPushButton{ +min-width:50px; +} + +QListView[noborder="true"],QTreeView[noborder="true"],QTabWidget[noborder="true"]::pane{ +border-width:0px; +} + +QToolBar>*,QStatusBar>*{ +margin:2px; +} + +*:disabled,QMenu::item:disabled,QTabBar:tab:disabled,QHeaderView::section:disabled{ +background:#444444; +border-color:#484848; +color:#242424; +} + +QLabel:disabled{ +background:none; +} + +/*TextColor:#DCDCDC*/ +/*PanelColor:#444444*/ +/*BorderColor:#242424*/ +/*NormalColorStart:#484848*/ +/*NormalColorEnd:#383838*/ +/*DarkColorStart:#646464*/ +/*DarkColorEnd:#525252*/ +/*HighColor:#AAAAAA*/ \ No newline at end of file diff --git a/qss/blacksoft/add_bottom.png b/qss/blacksoft/add_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a5f1494ac956b541c0d92818891026eb6d2c77 GIT binary patch literal 335 zcmV-V0kHmwP)Fyw;pPL{gHA$1n_Zjog@FP<|(=<)fG;JgC4SnC=ipV2yQP?nv$c-`P z-8ELO!(kZCMdX3=C#-~j@sx~}hm=Q5_BR^Vui zdGcL2^9{?ge6?-+Vy(Rbu1n#jX*vR@Xdo0t2I2k$LJ?#zE(i!&kx{r{AY?&CwA20{`t8J7fvDC90&G7y50yK%dKu!+oq+YJOKG8+yyzFV<%UDq^CbFkKa%=7$8 h2Arm8nx_4Oz5%Q)wpkE#fv zs|Xg>hMc4dT$5OdVB%WX2%d0BW)_A0%E0dairwtYLP|=?|Bl31B+Ifh5xE8)hheyA zn&xHKv3rg#0P;LP2X28Q;6zn7UDw_3I$qsmeBnX}H^Bb4&j(ZHa0C8=n;aLQ6%HJL zmN+m5TI0YF=z#+xpcf7dfSx#52=vCm0$>ar%ml{5!3?)gL>}t8z5_mDtecXO@)z<6 X;{S^MZkvK)00000NkvXXu0mjf8B?Pj literal 0 HcmV?d00001 diff --git a/qss/blacksoft/add_right.png b/qss/blacksoft/add_right.png new file mode 100644 index 0000000000000000000000000000000000000000..4c79925194c478dfaaedc732e6d87a616e3123ed GIT binary patch literal 352 zcmV-m0iXVfP)1g!BZ0 z0O<_`XQToMjz|>{oRCT&I3U$PC`7ISgm2_MnV%C_4+!u9EV)Z-0e3ORhf@~U0PbRp zn|Yr1r!1?1ML5s`i*cX>y5K+qbi;u^&=m*1KzAJY0VO!_0m^Vt4wT{`6SyqPd~lWH y0M2rTyRLg}n&usNY1{U09LGFBcjXjO4V5a0000nNXK-2( zWEL<2r!7V%0~2uCB4iRU1E*ypqk#)>S{5=2SOBLbBmV>z#A!*$Szra67L5!7E8?^$ zWau!7$X!L8wkD!SX1)%6FnPRf+j9U{p?Trf0JfpwB%tfMPXNyVzUr8MwFmGN8qPk6 un0W(WQ(E-1aU4JTzCYBwVOf@CRqPvMCWRUzRkYav0000!J5O8>CuBWpwprB2(=%x1scMnU(bOrSju9LV6gr&sAdac8EI;iaa z5EQULXF|uF+BZv8k9E%eyEE2~*CeC{<{vfC4=b1*3 eqqo#wFn{`>F!4%w&K6(@F?hQAxvXG>T zjD_{W%WL)kT8SV`tgPI^&CUdceC0xtUy*EP0xc~q|2tA+k^O#u0o;qoO9IbW*k)td3Hz?9N1=llR1eScHc<27@*0he$kaRFN4zyWB917n~y z4h(@FI4}Zw;lKdsiGz(mZyam@*1$m_uoeyqfb%?`(#$ z5Fn$05R6m+ArPqoLJ(33gaD)(2${$=fbfO9ardOh39JXi-QUd2Q}5OS?&`X}J?3x? z;I68wZQHi*#~iDHSvb%FvvHsUhTuR048uV@Fcb%|z;GPI0VOzy0m^WY50v5{{p0?6 zFv@WNb;@$nH23p7?}28TriZ@oKSZulsq}C91PgeNv|n*ItN;K207*qoM6N<$f(vYy AX8-^I literal 0 HcmV?d00001 diff --git a/qss/blacksoft/arrow_top.png b/qss/blacksoft/arrow_top.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c71e8208394014e6e1b2c7b4f0d1f1c8052e17 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEoCO|{#S9EWz97u_dHRv%3=E9? zo-U3d5v^}8FAO?jAaLxXen$*TF;nB}RWFkjDj9Wz<~_W})O_%s^ank`x$9o@q+66W ztxWiKg-?A}_9V6DoBQvcd$(SxVOi!ZAYyBn$t!rb|8Yfl(R<%c)qB<6F7FxmE}PT} zUNknIEwnpa|Kq*r?6`QMvGvR*I2< zpn9tE{`8stg_RG@804G|M>!qGZhh#*9s6>P4iyJL{LY?aA)=M zv6>*dy!2lE-o%#&a23_2rOH*i`n4hjgJfk8eK^*=j`4hzU=RZd(&6#Iw|x0 zRfLJ}=2y{sLPJfN49GRWm~+I0a;k$!P+9TTqP^)M5p-SV1kB7aY3keBWOekxKw;DS8+HH;&^RxvtwD zY{b4`yD<^e3GWtD`8Hj}l?pFu0AB~yYT@|vv01ixOs zjns_dghX_mEDk*;!!SH47K@JncBTkj5|Ql*{dWL0B6^t=A|e4ZU%0M&pX{mrNm{Me zArW0oSn?(!d!FY#%sL}eXK)l&P>U7RVgs^BW-8=urM7^^3gv&?g1nq0A(38y5Dw`L2w{*5KoQaXe*eUHJdSLTTI=(`V-eZ# zft&#vV=eQv=3^nGvMS}S$k=SNZS~5ZvKMP z_n_xAfE)9J`w56r>d5@qegckxt@*(pfuDfE+BmbB0QZt4c{+b#3e2+Xty1dIx8ikX z0^Cj0^o~+$;odWSP(+k5<`i(&;f77E_3afK^-|md&^1L-G)3e&aM}kBJOV@Dz!NYO z4mP7AB3Z+gs2zwSgPFRaFkWSyJK! z2Vq_kZ#eMZX1wCSL!&Os^3ZTNyb83m*3Xh8d99QZ54OJ}UjZ)n9p&5Sv#S6A002ov JPDHLkV1h5pC4~S0 literal 0 HcmV?d00001 diff --git a/qss/blacksoft/calendar_prevmonth.png b/qss/blacksoft/calendar_prevmonth.png new file mode 100644 index 0000000000000000000000000000000000000000..46d4d625c9aba4d5b2e366139d6b98b913a57224 GIT binary patch literal 667 zcmV;M0%ZM(P)x{Q;$Pt0IEZw*;_z;eKuV=bDQNQU$oo0ela_0fd%rvKium2$5q|H( z?~<4I9`HZ^ctq6&hr?lWGMQWja1;c=QQ3O63QT_^rM#<@8VMnWLWm!696yhuXsJxi z$~qXw@fs1m25|YrV+~+aDYX%XVZy0fNe9otW%buR&wENltY(z%;0)Z!d;_rT`@S@- zU#f#~96unUx0sCs0FQ{SapqtH|KMH$xK!lh^?LmaXC4;N5O+XCk9)n|A!jb*?;r!W z8U(>dbJ}r?fQ!Zf20$A)pdio|4k!S$i38>UO>jbppIYmO00tb0>$=lUr?W4F(1n18 zovSLjH*hA<5-!V*<2WnXx|v(3rIaf~v;{jj0JyHT_On3_NJNhSTv;gTbcEKro(*!q zTCL_T)-yY2b?^g@H<}kBIiOPN4S-G9Lms-W`!yTnfMFOWN~sOlK~9NitK04FWe?6> z2csxjYBUtNniedkN&J%>6I6jV!dA zv573aAGC!u+ELp;8lOoR$Zf}QZgUS!#-}>QI=MWZPT!42Bi81Fb?nTLMD!BHkT=KU z@eR&g?1Ot4hDnknPYjT(l)CybKz?dAo4cGjO5bi3KyEvZbFbBE{o>TGhoUqhmV4l?DFyuQz5fcJjXgMc^)mC7*7_U( zQnt83|KM#L07xkf5uG6LCkF$r;+Baa2LZ0bEhD8g%zW9kmK_+w#gY}6inG>gBARxs zr2rcMubKHo?0=@SSV=vxD=E4C0RaMnhopU0ZN-0h3165T$RZ4xyfeQgQLgvB& z;VRx^=1Xg>-k!D_4v6oAJ0bhHF{Yd(TOs?p&ZeHl8zK9=Yj4slBq94A1Z>*P1d%zW z6x+00oyc4xlx_RLe~@)uALN?vgf{Bb`~>i*4@_73=%};dfcwe9?z!v0--3ufmsSLF zC4>-X0OqA79WlxP++nE4|TMq(MWVCIXa fX`XAX7Xa`F3D;<%=aqnT00000NkvXXu0mjfN$mu% literal 0 HcmV?d00001 diff --git a/qss/blacksoft/checkbox_checked_disable.png b/qss/blacksoft/checkbox_checked_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..f6aab4033a67e3b67955f59fa60a4a93ba51370f GIT binary patch literal 656 zcmV;B0&o3^P)Lyh@AJ0$b`h#Qb#V|9yL1#BJVgh&$vY7T z2mb*laTWYAIvu#);3C{2IGvM|2t_z>%#tRhf|Cd>H)wmtybfpKdZusEHffgoj!j

xW9Rm}Jfn8t+_?haf@JqUsgW6T=Rw=GyEFgC_))@rq#3*L6+8@86VC_k7>qwJmP7S|>-N(M_%O$0BexU}j{N7P{>2yKIDXe` zHm}T2TMP&3``|*zJZ_9xz9e%Y^SaJv{T9!J%=4~2%V8lCGVejatfv_(vWO|gJjbm> zWKkoOdC!9rNY{056gA(mZPZ!%!@(qK1*qghnyk9u`U-G956HBRCkqSqTLF7zD=d9g z!27ZlmbR5r>KPE0ElH>yMbRte`+hf$^Pbr$|Dw@Q2kpVO+unV zm{&i7P49ce7Mnl9emmMeM<1MS|M0Sj?{UlL)(;xGTvAS1#+Su@XH#IPy}v%>>$0>P zeXcI&Zf%oIkvX1{=6@jW?JC*Z%QF48PANM3znl4n{?eG09Wqz-es<1WyQS<%ywU}2 zroDuSm$9xXvAZ9MpI^0V`+;p`C(YZ=rhV36IBX!(b%J>+|9^4gYF51 zE{-7)t#8j6dL0Q6Xn0tkro8RqimekOB5!4CPwSf6TK<7;Q}_oavqNUvs+b(t>~W~z z+$gGeI*ifz+OedGs$#)=()J1099nO4zQ1v1#~b16)&-(YD;QW7Xmn*ikh{?%5&e~Q zPP@Q8mGhs41uL1hC9VIrBIIk%q|}?r1p?KZk9{lJc_;LN#iYtFJ`S!qG zZp)_yQ`y(rWIT1$=8vkpaH=^BMM$bvdqc-wiH{2p6u&vzF>}=`-GHO>)_lD6{qNjq zsgeAL3piVDEEd)GoD^f?YdoJ}OYZNP%U(8jykTf}5YjXgpO|^Q)VwrSpP`Q7$qcir U<~IXh0fU0U)78&qol`;+0Ih9}NB{r; literal 0 HcmV?d00001 diff --git a/qss/blacksoft/checkbox_unchecked.png b/qss/blacksoft/checkbox_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..8a23968e063407ca349c15b5cf9d6f666d8565c4 GIT binary patch literal 572 zcmV-C0>k}@P)@Cq#?L`XJM1VIiPTNf;@u(G@2 zN)^sdun-GNI|~af#IvwC>@81Xb7-TWh(dP5CLv&-MmS9FjaN+36I3V}*0?XszEY1V^J$J5AG<){GI6+gj_lCCj1L>(!gh<~D#WOYqxd zGPxFpp-}*krs<}=Nhx)+3ON7>!_ag(okt{h@{Hu!Mx${V0MtCYXzkf=x7(kpkh2+& z$4>zqkvNM$#6%dj0*4hAbL8a73Ywl{2Bx@DB zA&%n>lJ@1i2bMSZ%4*cJEPGs~krTjt zyo9kWPi7Q0XLE)c|H_$&Rqmv0F(VqT{BzgbULd* zny20L^mKK6e0&*LWUr&|RCTu1YJD42Yr&J-Qq}oRr?Zl`9KgoL#?K^4ZkyRXFFu#1 z=~V!A&P|HQd2ew&2!beYu>)ASTz&*3{ci=X0cfdII&NlxxA|=pMcX45WNK>atC@Z9 zq8jYK5Qj<>McX2>bud3Ng8!lr%t|4cl|nEpg zC}vhV80y&ASWiU0d)es`N)2f?n{`!nUi1e*<2de`*?VtcuF+_Oqt%06uQz9AXT9hZ z?6%l|XY`GMQ>ywT48xIC(m8iUL>|%~`FRR#!!2);qTeteDwL5!uPf zt!8G|MdT8DldV)lmfP+2-Ju{r7>12BP1k@kIm!GlPb-zmLLA4x!Mnw+R_mjx&H}Fw zNo)tW@5_N#K@WA#T{g2jB65NLlqpBPusb|`kR(Z*^S=s?9)AG`9HCqlvGOqh0000< KMNUMnLSTX-T@Yjd literal 0 HcmV?d00001 diff --git a/qss/blacksoft/menu_checked.png b/qss/blacksoft/menu_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..4fca11f958a859debbc44b1f9601e1e8e69bcdd1 GIT binary patch literal 501 zcmV;pQ5ZA!Ewf3Uh?LK6UTL~~pl09S09k4a&`W8Z*b~>Hgzhi3$X5i9fB5MWa;L^+? zYXdsq(u}2)hf1ke02!WE2nVoXj8SPLIItiNKualK(ne5V30y3tJXT75rX35P!6=Fj zthJXwWQ;lQ_xm3;;Et41Z@)V;fpHw4SZi;9wY19^Gwk(xNu9V%U00000NkvXXu0mjfgi6*S literal 0 HcmV?d00001 diff --git a/qss/blacksoft/radiobutton_checked.png b/qss/blacksoft/radiobutton_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..69e499fb1c3033b4fa560c5567af20dc1bda0d48 GIT binary patch literal 1421 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 literal 0 HcmV?d00001 diff --git a/qss/blacksoft/radiobutton_unchecked_disable.png b/qss/blacksoft/radiobutton_unchecked_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..f729f172f2a2341bc246de76b7f568780635e4ba GIT binary patch literal 1365 zcmV-b1*-aqP)LYClmr|s~cAMRK z?&-tMzWB^Dv#%3<=>KJA&OP_u-<b!sHv{5egk+4aApYR*MNw;+S%E;jY)>SEMPPmZFC%G zx2i6mBd|-Ps(U=od!)O&yRVc_Nx*nK9``(N57076KOWEn`~v(@uq^?uD|}8i9S(;= zp|$Pp?Y&b5bX_-Ut=(S+&H_h)*CLU~SIJ~@D9EX?v2jsVRn-H)3qW%j$V2&j{@$QS z76HcN@df#OevgRU64a8ab^{wTnan;w%XB(XCKiir0Nw;HE8(*<5{W$S|FcEmx7KbF zkyQZ=Sm2B5>gr{gOlI#i-~enoo&MMua}98)gwOh1F1Oxqyd;8!t>gf(H~{YbNF?%X zso|We5{bn8TrT$su+CqmsvXwa+p^j0Z=<$}5fp3fGXZb_pUnjvKr)%^&*$?`5D-Zb ziHAa=M=!CBekl{Zj4@_)DwXP*E!;%8uDiloyBApGD@upM;ag9fIB^ChL{L>%2f$fX z-8$EB0I5{!2(TldC^|emJhng$KvPpwHE?%;^D)P9cFi?hK?=O5s%Lz51KdwxbPa&x zI1Q@0tf&Rm{i#&yT!jEhr_)^`@}u7_B5jF8V$m2N&`3(YlD+O1O0tbqWs`Z0| zgY{4VG{#&3)cBnGR5e{;K!D?nACaS~6_F)lfU4^HYl%p|F=nvRbk^D)RsG9nt`U*T z#{f&H*KwS`D~C3sa5$V7k&-D_Nk9>CJkOi)m0+$k3V6z2psGt9$C+Pg0MGM+7N}L# zJdDr5UWzl@h53BGsnURq>>&O?^oz*&Nm5v?7kp0hMPxQeosqmV=mZPAdImMOee zSi{IRQZ6aEpsH&!nM~kybh5XZdyFwVDILk#>Xb2NT`HCOxs*fMcayHJu5W;wf#h71 z0f&q+E6c&b6rR)0pFe-LwzhUhC=?n7Rsi8yg7pDUr__%U975G zRCNQzDbi#*3%oUzg*9Wq2{O@W^d=E`xbVo-Oz~p62xNe-Jf&1R1?!*}ZcH5>f{ X=*#LR(ps-<00000NkvXXu0mjf;(CsV literal 0 HcmV?d00001 diff --git a/resource.qrc b/resource.qrc new file mode 100644 index 0000000..96950d1 --- /dev/null +++ b/resource.qrc @@ -0,0 +1,3 @@ + + + diff --git a/treasurefinder_zh_CN.ts b/treasurefinder_zh_CN.ts index 2ab6959..064c898 100644 --- a/treasurefinder_zh_CN.ts +++ b/treasurefinder_zh_CN.ts @@ -115,45 +115,70 @@ - + + Verification code - + 验证码 + 验证码 - + + Password + 密码 + 密码 + + + + 最小化 - - UserName + + 关闭 - + + + UserName + 用户名 + 用户名 + + + admin - + 1qazse42W3 - - + + Login - + 登录 + 登录 - + Cancel - + 取消 + 取消 + + + + mojin login + 摸金系统登录 + 摸金系统登录 - + Login Error. - + 登录错误 + 登录错误 @@ -245,82 +270,90 @@ - + date 日期 日期 - + week 星期 星期 - + name 证券名称 证券名称 - + operate 操作 操作 - + operateprice 操作价格 操作价格 - + volume 操作数量 操作数量 - + remainig 剩余数量 剩余数量 - + operatechange 操作涨跌幅 操作涨跌幅 - + close 收盘价 收盘价 - + operateprofit 操作盈亏 操作盈亏 - + totalprofit 收盘盈亏 收盘盈亏 - + finalprofit 总盈亏 总盈亏 - + remark 备注 备注 + + TrendsWidget + + + Form + + + diff --git a/widget/logindialog.cpp b/widget/logindialog.cpp index 114dcd6..2699aa3 100644 --- a/widget/logindialog.cpp +++ b/widget/logindialog.cpp @@ -8,12 +8,17 @@ #include #include #include +#include "iconhelper.h" +#include "quihelper.h" LoginDialog::LoginDialog(QWidget *parent) : QDialog(parent), ui(new Ui::LoginDialog) { ui->setupUi(this); + Init(); + InitStyle(); + this->installEventFilter(this); m_UserData.SetManagerType(ManagerType::Ruoyi); GetVerificationCode(); } @@ -23,11 +28,103 @@ LoginDialog::~LoginDialog() delete ui; } +bool LoginDialog::eventFilter(QObject *watched, QEvent *event) +{ + QWidget *w = (QWidget *)watched; + if(w->property("form") != "title") + { + return QObject::eventFilter(watched, event); + } + if (!w->property("canMove").toBool()) + { + return QObject::eventFilter(watched, event); + } + + static QPoint mousePoint; + static bool mousePressed = false; + + QMouseEvent *mouseEvent = static_cast(event); + if (mouseEvent->type() == QEvent::MouseButtonPress) { + if (mouseEvent->button() == Qt::LeftButton) { + mousePressed = true; + mousePoint = mouseEvent->globalPos() - this->pos(); + } + } else if (mouseEvent->type() == QEvent::MouseButtonRelease) { + mousePressed = false; + } else if (mouseEvent->type() == QEvent::MouseMove) { + if (mousePressed) { + this->move(mouseEvent->globalPos() - mousePoint); + return true; + } + } + + return QObject::eventFilter(watched, event); +} + + +void LoginDialog::Init() +{ + //设置无边框 + QUIHelper::setFramelessForm(this); + //设置图标 + IconHelper::setIcon(ui->btnMenu_Min, 0xf068); + IconHelper::setIcon(ui->btnMenu_Close, 0xf00d); + + //ui->widgetMenu->setVisible(false); + ui->widgetTitle->setProperty("form", "title"); + ui->widgetTitle->setProperty("canMove",true); + //关联事件过滤器用于双击放大 + ui->widgetTitle->installEventFilter(this); + ui->widgetTop->setProperty("nav", "top"); + + QFont font; + font.setPixelSize(25); + ui->labTitle->setFont(font); + ui->labTitle->setText(tr("mojin login")); + this->setWindowTitle(ui->labTitle->text()); +} + +void LoginDialog::InitStyle() +{ + //加载样式表 + QString qss; + QFile file(":/qss/blacksoft.css"); + if (file.open(QFile::ReadOnly)) { + qss = QLatin1String(file.readAll()); + QString paletteColor = qss.mid(20, 7); + qApp->setPalette(QPalette(paletteColor)); + qApp->setStyleSheet(qss); + file.close(); + } + + //先从样式表中取出对应的颜色 + QString textColor, panelColor, borderColor, normalColorStart, normalColorEnd, darkColorStart, darkColorEnd, highColor; + getQssColor(qss, textColor, panelColor, borderColor, normalColorStart, normalColorEnd, darkColorStart, darkColorEnd, highColor); + + //将对应颜色设置到控件 + this->borderColor = highColor; + this->normalBgColor = normalColorStart; + this->darkBgColor = panelColor; + this->normalTextColor = textColor; + this->darkTextColor = normalTextColor; +} + void LoginDialog::on_pushButton_cancle_clicked() { this->reject(); } +void LoginDialog::on_btnMenu_Min_clicked() +{ + showMinimized(); +} + +void LoginDialog::on_btnMenu_Close_clicked() +{ + close(); +} + + void LoginDialog::GetVerificationCode() { QPixmap pix = m_UserData.GetVerificationCode(); @@ -45,3 +142,25 @@ void LoginDialog::on_pushButton_login_clicked() this->accept(); } +void LoginDialog::getQssColor(const QString &qss, const QString &flag, QString &color) +{ + int index = qss.indexOf(flag); + if (index >= 0) { + color = qss.mid(index + flag.length(), 7); + } + //qDebug() << TIMEMS << flag << color; +} + +void LoginDialog::getQssColor(const QString &qss, QString &textColor, QString &panelColor, + QString &borderColor, QString &normalColorStart, QString &normalColorEnd, + QString &darkColorStart, QString &darkColorEnd, QString &highColor) +{ + getQssColor(qss, "TextColor:", textColor); + getQssColor(qss, "PanelColor:", panelColor); + getQssColor(qss, "BorderColor:", borderColor); + getQssColor(qss, "NormalColorStart:", normalColorStart); + getQssColor(qss, "NormalColorEnd:", normalColorEnd); + getQssColor(qss, "DarkColorStart:", darkColorStart); + getQssColor(qss, "DarkColorEnd:", darkColorEnd); + getQssColor(qss, "HighColor:", highColor); +} diff --git a/widget/logindialog.h b/widget/logindialog.h index 9429798..c45c07d 100644 --- a/widget/logindialog.h +++ b/widget/logindialog.h @@ -19,17 +19,39 @@ public: ~LoginDialog(); UserInfo GetUserInfo(){return m_UserInfo;} private: + void Init(); + void InitStyle(); //加载验证码 void GetVerificationCode(); +protected: + bool eventFilter(QObject *watched, QEvent *event); + private slots: void on_pushButton_cancle_clicked(); void on_pushButton_login_clicked(); + void on_btnMenu_Min_clicked(); +// void on_btnMenu_Max_clicked(); + void on_btnMenu_Close_clicked(); +private: + void getQssColor(const QString &qss, const QString &flag, QString &color); + void getQssColor(const QString &qss, QString &textColor, + QString &panelColor, QString &borderColor, + QString &normalColorStart, QString &normalColorEnd, + QString &darkColorStart, QString &darkColorEnd, + QString &highColor); private: Ui::LoginDialog *ui; UserData m_UserData; UserInfo m_UserInfo; + + //根据QSS样式获取对应颜色值 + QString borderColor; + QString normalBgColor; + QString darkBgColor; + QString normalTextColor; + QString darkTextColor; }; #endif // LOGINDIALOG_H diff --git a/widget/logindialog.ui b/widget/logindialog.ui index 0116a7b..1fd4ea0 100644 --- a/widget/logindialog.ui +++ b/widget/logindialog.ui @@ -6,8 +6,8 @@ 0 0 - 707 - 459 + 600 + 300 @@ -16,30 +16,232 @@ - 150 - 150 - 440 - 126 + 200 + 240 + 169 + 27 - - - + + + - Verification code + Login - - + + + + Cancel + + + + + + + + + 0 + 0 + 600 + 65 + + + + + 0 + 0 + + + + + 10 + + + 10 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + Qt::AlignCenter + + + + + + + + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + - 0 - 36 + 100 + 0 + + + + + 100 + 16777215 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + ArrowCursor + + + Qt::NoFocus + + + 最小化 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 0 + 0 + + + + ArrowCursor + + + Qt::NoFocus + + + 关闭 + + + + + + + + + + + + + 0 + 65 + 601 + 144 + + + @@ -59,14 +261,30 @@ - - + + + + + 0 + 36 + + + 1qazse42W3 + + Password - + + + + Verification code + + + + UserName @@ -77,54 +295,64 @@ - 128 + 168 36 admin + + UserName + - - + + 0 36 - - 1qazse42W3 + + Verification code - - - - - - 270 - 310 - 169 - 26 - - - - - - - Login + + + + Qt::Horizontal - + + + 40 + 20 + + + - - + + - Cancel + Password + + + + Qt::Horizontal + + + + 40 + 20 + + + + diff --git a/widget/trendswidget.cpp b/widget/trendswidget.cpp index 36c70b5..fd218df 100644 --- a/widget/trendswidget.cpp +++ b/widget/trendswidget.cpp @@ -36,6 +36,7 @@ void TrendsWidget::LoadTrendsData() if(rowCount > 2) { model->insertRow(0); + qDebug() << __FUNCTION__ << " trends[0]: " << trends[0]; QList columns = trends[0]; columnCount = columns.count(); for (int column = 0; column < columnCount; ++column) { @@ -43,7 +44,9 @@ void TrendsWidget::LoadTrendsData() model->setItem(0, column, item); } } - qDebug() << __FUNCTION__ << trends[1]; + qDebug() << __FUNCTION__ << " trends[1]: " < row1List = trends[1]; qDebug() << __FUNCTION__ << trends[1]; @@ -55,12 +58,12 @@ void TrendsWidget::LoadTrendsData() model->setItem(row, 0, item); } - for(int col = 1 ; col < columnCount; col++) + for(int row = 2 ; row < rowCount; row++) { - for(int row = 2 ; row < rowCount; row++) + for(int col = 0 ; col < columnCount; col++) { - QStandardItem *item = new QStandardItem(trends[col][row]); - model->setItem(row, col, item); + QStandardItem *item = new QStandardItem(trends[row][col]); + model->setItem(row, col+1, item); } }