彻底改版2.0
BIN
ui/0snap/flatui.jpg
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
ui/0snap/styledemo1.jpg
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
ui/0snap/styledemo2.jpg
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
ui/0snap/styledemo3.jpg
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
ui/0snap/uidemo01.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
ui/0snap/uidemo08.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
ui/0snap/uidemo09.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
ui/0snap/uidemo10.jpg
Normal file
|
After Width: | Height: | Size: 34 KiB |
22
ui/core_common/appdata.cpp
Normal file
@@ -0,0 +1,22 @@
|
||||
#include "appdata.h"
|
||||
#include "quihelper.h"
|
||||
|
||||
QString AppData::Version = "V20211105";
|
||||
QString AppData::TitleFlag = "(QQ: 517216493 WX: feiyangqingyun)";
|
||||
|
||||
int AppData::RowHeight = 25;
|
||||
int AppData::RightWidth = 180;
|
||||
int AppData::FormWidth = 950;
|
||||
int AppData::FormHeight = 650;
|
||||
|
||||
void AppData::checkRatio()
|
||||
{
|
||||
//根据分辨率设定宽高
|
||||
int width = QUIHelper::deskWidth();
|
||||
if (width > 1440) {
|
||||
RowHeight = RowHeight < 25 ? 25 : RowHeight;
|
||||
RightWidth = RightWidth < 220 ? 220 : RightWidth;
|
||||
FormWidth = FormWidth < 1250 ? 1250 : FormWidth;
|
||||
FormHeight = FormHeight < 850 ? 850 : FormHeight;
|
||||
}
|
||||
}
|
||||
20
ui/core_common/appdata.h
Normal file
@@ -0,0 +1,20 @@
|
||||
#ifndef APPDATA_H
|
||||
#define APPDATA_H
|
||||
|
||||
#include "head.h"
|
||||
|
||||
class AppData
|
||||
{
|
||||
public:
|
||||
static QString Version; //版本号
|
||||
static QString TitleFlag; //标题标识
|
||||
|
||||
static int RowHeight; //行高
|
||||
static int RightWidth; //右侧宽度
|
||||
static int FormWidth; //窗体宽度
|
||||
static int FormHeight; //窗体高度
|
||||
|
||||
static void checkRatio(); //校验分辨率
|
||||
};
|
||||
|
||||
#endif // APPDATA_H
|
||||
56
ui/core_common/appinit.cpp
Normal file
@@ -0,0 +1,56 @@
|
||||
#include "appinit.h"
|
||||
#include "qmutex.h"
|
||||
#include "qapplication.h"
|
||||
#include "qevent.h"
|
||||
#include "qwidget.h"
|
||||
|
||||
QScopedPointer<AppInit> 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<QMouseEvent *>(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);
|
||||
}
|
||||
23
ui/core_common/appinit.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef APPINIT_H
|
||||
#define APPINIT_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
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<AppInit> self;
|
||||
|
||||
public slots:
|
||||
void start();
|
||||
};
|
||||
|
||||
#endif // APPINIT_H
|
||||
41
ui/core_common/base64helper.cpp
Normal file
@@ -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.toLocal8Bit().toBase64());
|
||||
}
|
||||
|
||||
QString Base64Helper::base64ToText(const QString &text)
|
||||
{
|
||||
return QString(QByteArray::fromBase64(text.toLocal8Bit()));
|
||||
}
|
||||
37
ui/core_common/base64helper.h
Normal file
@@ -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 <QImage>
|
||||
|
||||
#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
|
||||
39
ui/core_common/core_common.pri
Normal file
@@ -0,0 +1,39 @@
|
||||
#指定编译产生的文件分门别类放到对应目录
|
||||
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
|
||||
|
||||
#引入全志H3芯片依赖
|
||||
include ($$PWD/h3.pri)
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/appdata.h \
|
||||
$$PWD/appinit.h \
|
||||
$$PWD/base64helper.h \
|
||||
$$PWD/iconhelper.h \
|
||||
$$PWD/quihelper.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/appdata.cpp \
|
||||
$$PWD/appinit.cpp \
|
||||
$$PWD/base64helper.cpp \
|
||||
$$PWD/iconhelper.cpp \
|
||||
$$PWD/quihelper.cpp
|
||||
|
||||
RESOURCES += $$PWD/qrc/qm.qrc
|
||||
RESOURCES += $$PWD/qrc/font.qrc
|
||||
RESOURCES += $$PWD/qrc/image.qrc
|
||||
6
ui/core_common/h3.pri
Normal file
@@ -0,0 +1,6 @@
|
||||
unix:!macx {
|
||||
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
|
||||
}}
|
||||
359
ui/core_common/iconhelper.cpp
Normal file
@@ -0,0 +1,359 @@
|
||||
#include "iconhelper.h"
|
||||
|
||||
IconHelper *IconHelper::iconFontAliBaBa = 0;
|
||||
IconHelper *IconHelper::iconFontAwesome = 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 (iconFontWeather == 0) {
|
||||
iconFontWeather = new IconHelper(":/font/pe-icon-set-weather.ttf", "pe-icon-set-weather");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QFont IconHelper::getIconFontAliBaBa()
|
||||
{
|
||||
initFont();
|
||||
return iconFontAliBaBa->getIconFont();
|
||||
}
|
||||
|
||||
QFont IconHelper::getIconFontAwesome()
|
||||
{
|
||||
initFont();
|
||||
return iconFontAwesome->getIconFont();
|
||||
}
|
||||
|
||||
QFont IconHelper::getIconFontWeather()
|
||||
{
|
||||
initFont();
|
||||
return iconFontWeather->getIconFont();
|
||||
}
|
||||
|
||||
IconHelper *IconHelper::getIconHelper(int icon)
|
||||
{
|
||||
initFont();
|
||||
|
||||
//指定了字体索引则取对应索引的字体类
|
||||
//没指定则自动根据不同的字体的值选择对应的类
|
||||
//由于部分值范围冲突所以可以指定索引来取
|
||||
//fontawesome 0xf000-0xf2e0
|
||||
//iconfont 0xe501-0xe793 0xe8d5-0xea5d
|
||||
//weather 0xe900-0xe9cf
|
||||
|
||||
IconHelper *iconHelper = iconFontAwesome;
|
||||
if (iconFontIndex < 0) {
|
||||
if ((icon > 0xe501 && icon < 0xe793) || (icon > 0xe8d5 && icon < 0xea5d)) {
|
||||
iconHelper = iconFontAliBaBa;
|
||||
}
|
||||
} else if (iconFontIndex == 0) {
|
||||
iconHelper = iconFontAliBaBa;
|
||||
} else if (iconFontIndex == 1) {
|
||||
iconHelper = iconFontAwesome;
|
||||
} else if (iconFontIndex == 2) {
|
||||
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<QPushButton *> btns,
|
||||
QList<int> icons, const IconHelper::StyleColor &styleColor)
|
||||
{
|
||||
int icon = icons.first();
|
||||
getIconHelper(icon)->setStyle1(widget, btns, icons, styleColor);
|
||||
}
|
||||
|
||||
void IconHelper::setStyle(QWidget *widget, QList<QToolButton *> btns,
|
||||
QList<int> icons, const IconHelper::StyleColor &styleColor)
|
||||
{
|
||||
int icon = icons.first();
|
||||
getIconHelper(icon)->setStyle1(widget, btns, icons, styleColor);
|
||||
}
|
||||
|
||||
void IconHelper::setStyle(QWidget *widget, QList<QAbstractButton *> btns,
|
||||
QList<int> 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)) {
|
||||
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<QPushButton *> btns, QList<int> icons, const IconHelper::StyleColor &styleColor)
|
||||
{
|
||||
QList<QAbstractButton *> list;
|
||||
foreach (QPushButton *btn, btns) {
|
||||
list << btn;
|
||||
}
|
||||
|
||||
setStyle(widget, list, icons, styleColor);
|
||||
}
|
||||
|
||||
void IconHelper::setStyle1(QWidget *widget, QList<QToolButton *> btns, QList<int> icons, const IconHelper::StyleColor &styleColor)
|
||||
{
|
||||
QList<QAbstractButton *> list;
|
||||
foreach (QToolButton *btn, btns) {
|
||||
list << btn;
|
||||
}
|
||||
|
||||
setStyle(widget, list, icons, styleColor);
|
||||
}
|
||||
|
||||
void IconHelper::setStyle1(QWidget *widget, QList<QAbstractButton *> btns, QList<int> 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 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);
|
||||
|
||||
//设置样式表
|
||||
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));
|
||||
}
|
||||
}
|
||||
176
ui/core_common/iconhelper.h
Normal file
@@ -0,0 +1,176 @@
|
||||
#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 <QtGui>
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
|
||||
#include <QtWidgets>
|
||||
#endif
|
||||
|
||||
#ifdef quc
|
||||
class Q_DECL_EXPORT IconHelper : public QObject
|
||||
#else
|
||||
class IconHelper : public QObject
|
||||
#endif
|
||||
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
//样式颜色结构体
|
||||
struct StyleColor {
|
||||
QString position; //位置 left right top bottom
|
||||
bool defaultBorder; //默认有边框
|
||||
|
||||
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;
|
||||
|
||||
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 IconHelper *iconFontAliBaBa;
|
||||
//FontAwesome图形字体类
|
||||
static IconHelper *iconFontAwesome;
|
||||
//天气图形字体类
|
||||
static IconHelper *iconFontWeather;
|
||||
//图形字体索引
|
||||
static int iconFontIndex;
|
||||
|
||||
//初始化图形字体
|
||||
static void initFont();
|
||||
|
||||
//获取图形字体
|
||||
static QFont getIconFontAliBaBa();
|
||||
static QFont getIconFontAwesome();
|
||||
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<QPushButton *> btns, QList<int> icons, const StyleColor &styleColor);
|
||||
static void setStyle(QWidget *widget, QList<QToolButton *> btns, QList<int> icons, const StyleColor &styleColor);
|
||||
static void setStyle(QWidget *widget, QList<QAbstractButton *> btns, QList<int> 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<QAbstractButton *> btns; //按钮队列
|
||||
QList<QPixmap> pixNormal; //正常图片队列
|
||||
QList<QPixmap> pixHover; //悬停图片队列
|
||||
QList<QPixmap> pixPressed; //按下图片队列
|
||||
QList<QPixmap> 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<QPushButton *> btns, QList<int> icons, const StyleColor &styleColor);
|
||||
void setStyle1(QWidget *widget, QList<QToolButton *> btns, QList<int> icons, const StyleColor &styleColor);
|
||||
void setStyle1(QWidget *widget, QList<QAbstractButton *> btns, QList<int> icons, const StyleColor &styleColor);
|
||||
};
|
||||
|
||||
#endif // ICONHELPER_H
|
||||
7
ui/core_common/qrc/font.qrc
Normal file
@@ -0,0 +1,7 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>font/fontawesome-webfont.ttf</file>
|
||||
<file>font/iconfont.ttf</file>
|
||||
<file>font/pe-icon-set-weather.ttf</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
BIN
ui/core_common/qrc/font/fontawesome-webfont.ttf
Normal file
BIN
ui/core_common/qrc/font/iconfont.ttf
Normal file
BIN
ui/core_common/qrc/font/pe-icon-set-weather.ttf
Normal file
5
ui/core_common/qrc/image.qrc
Normal file
@@ -0,0 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>image/bg_novideo.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
BIN
ui/core_common/qrc/image/bg_novideo.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
6
ui/core_common/qrc/qm.qrc
Normal file
@@ -0,0 +1,6 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>qm/qt_zh_CN.qm</file>
|
||||
<file>qm/widgets.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
BIN
ui/core_common/qrc/qm/qt_zh_CN.qm
Normal file
BIN
ui/core_common/qrc/qm/widgets.qm
Normal file
420
ui/core_common/quihelper.cpp
Normal file
@@ -0,0 +1,420 @@
|
||||
#include "quihelper.h"
|
||||
|
||||
int QUIHelper::getScreenIndex()
|
||||
{
|
||||
//需要对多个屏幕进行处理
|
||||
int screenIndex = 0;
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
|
||||
int screenCount = qApp->screens().count();
|
||||
#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;
|
||||
}
|
||||
|
||||
int QUIHelper::deskWidth()
|
||||
{
|
||||
return getScreenRect().width();
|
||||
}
|
||||
|
||||
int QUIHelper::deskHeight()
|
||||
{
|
||||
return getScreenRect().height();
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
QString QUIHelper::appName()
|
||||
{
|
||||
//没有必要每次都获取,只有当变量为空时才去获取一次
|
||||
static QString name;
|
||||
if (name.isEmpty()) {
|
||||
name = qApp->applicationFilePath();
|
||||
//下面的方法主要为了过滤安卓的路径 lib程序名_armeabi-v7a
|
||||
QStringList list = name.split("/");
|
||||
name = list.at(list.count() - 1).split(".").at(0);
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
QString QUIHelper::appPath()
|
||||
{
|
||||
#ifdef Q_OS_ANDROID
|
||||
//return QString("/sdcard/Android/%1").arg(appName());
|
||||
return QString("/storage/emulated/0/%1").arg(appName());
|
||||
#else
|
||||
return qApp->applicationDirPath();
|
||||
#endif
|
||||
}
|
||||
|
||||
QString QUIHelper::getUuid()
|
||||
{
|
||||
QString uuid = QUuid::createUuid().toString();
|
||||
uuid.replace("{", "");
|
||||
uuid.replace("}", "");
|
||||
return uuid;
|
||||
}
|
||||
|
||||
void QUIHelper::initRand()
|
||||
{
|
||||
//初始化随机数种子
|
||||
QTime t = QTime::currentTime();
|
||||
srand(t.msec() + t.second() * 1000);
|
||||
}
|
||||
|
||||
void QUIHelper::newDir(const QString &dirName)
|
||||
{
|
||||
QString strDir = dirName;
|
||||
|
||||
//如果路径中包含斜杠字符则说明是绝对路径
|
||||
//linux系统路径字符带有 / windows系统 路径字符带有 :/
|
||||
if (!strDir.startsWith("/") && !strDir.contains(":/")) {
|
||||
strDir = QString("%1/%2").arg(QUIHelper::appPath()).arg(strDir);
|
||||
}
|
||||
|
||||
QDir dir(strDir);
|
||||
if (!dir.exists()) {
|
||||
dir.mkpath(strDir);
|
||||
}
|
||||
}
|
||||
|
||||
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() << "Qt内置的样式" << QStyleFactory::keys();
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
|
||||
qApp->setStyle(QStyleFactory::create("Fusion"));
|
||||
#else
|
||||
qApp->setStyle(QStyleFactory::create("Cleanlooks"));
|
||||
#endif
|
||||
//qApp->setPalette(QPalette("#FFFFFF"));
|
||||
}
|
||||
|
||||
void QUIHelper::setFont(int fontSize)
|
||||
{
|
||||
QFont font;
|
||||
font.setFamily("MicroSoft Yahei");
|
||||
#ifdef Q_OS_ANDROID
|
||||
font.setPixelSize(15);
|
||||
#elif __arm__
|
||||
font.setPixelSize(25);
|
||||
#else
|
||||
font.setPixelSize(fontSize);
|
||||
#endif
|
||||
|
||||
#ifndef rk3399
|
||||
qApp->setFont(font);
|
||||
#endif
|
||||
}
|
||||
|
||||
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);
|
||||
translator->load(qmFile);
|
||||
qApp->installTranslator(translator);
|
||||
}
|
||||
|
||||
void QUIHelper::initAll()
|
||||
{
|
||||
//初始化随机数种子
|
||||
QUIHelper::initRand();
|
||||
//设置样式风格
|
||||
QUIHelper::setStyle();
|
||||
//设置字体
|
||||
QUIHelper::setFont(13);
|
||||
//设置编码
|
||||
QUIHelper::setCode();
|
||||
//设置翻译文件支持多个
|
||||
QUIHelper::setTranslator(":/qm/widgets.qm");
|
||||
QUIHelper::setTranslator(":/qm/qt_zh_CN.qm");
|
||||
QUIHelper::setTranslator(":/qm/designer_zh_CN.qm");
|
||||
}
|
||||
|
||||
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 &info, int type, int closeSec, bool exec)
|
||||
{
|
||||
int result = 0;
|
||||
if (type == 0) {
|
||||
showMessageBoxInfo(info, closeSec, exec);
|
||||
} else if (type == 1) {
|
||||
showMessageBoxError(info, closeSec, exec);
|
||||
} else if (type == 2) {
|
||||
result = showMessageBoxQuestion(info);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void QUIHelper::showMessageBoxInfo(const QString &info, int closeSec, bool exec)
|
||||
{
|
||||
QMessageBox box(QMessageBox::Information, "提示", info);
|
||||
box.setStandardButtons(QMessageBox::Yes);
|
||||
box.setButtonText(QMessageBox::Yes, QString("确 定"));
|
||||
box.exec();
|
||||
//QMessageBox::information(0, "提示", info, QMessageBox::Yes);
|
||||
}
|
||||
|
||||
void QUIHelper::showMessageBoxError(const QString &info, int closeSec, bool exec)
|
||||
{
|
||||
QMessageBox box(QMessageBox::Critical, "错误", info);
|
||||
box.setStandardButtons(QMessageBox::Yes);
|
||||
box.setButtonText(QMessageBox::Yes, QString("确 定"));
|
||||
box.exec();
|
||||
//QMessageBox::critical(0, "错误", info, QMessageBox::Yes);
|
||||
}
|
||||
|
||||
int QUIHelper::showMessageBoxQuestion(const QString &info)
|
||||
{
|
||||
QMessageBox box(QMessageBox::Question, "询问", info);
|
||||
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);
|
||||
}
|
||||
|
||||
QString QUIHelper::getXorEncryptDecrypt(const QString &value, char key)
|
||||
{
|
||||
//矫正范围外的数据
|
||||
if (key < 0 || key >= 127) {
|
||||
key = 127;
|
||||
}
|
||||
|
||||
QString result = value;
|
||||
int count = result.count();
|
||||
for (int i = 0; i < count; i++) {
|
||||
result[i] = QChar(result.at(i).toLatin1() ^ key);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
uchar QUIHelper::getOrCode(const QByteArray &data)
|
||||
{
|
||||
int len = data.length();
|
||||
uchar result = 0;
|
||||
for (int i = 0; i < len; i++) {
|
||||
result ^= data.at(i);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
uchar QUIHelper::getCheckCode(const QByteArray &data)
|
||||
{
|
||||
int len = data.length();
|
||||
uchar temp = 0;
|
||||
for (uchar 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)
|
||||
{
|
||||
//取消自动换行
|
||||
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 (fileName.isEmpty()) {
|
||||
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.count() == 2) {
|
||||
if (list.at(1) == "") {
|
||||
qDebug() << "ini node no value" << list.at(0);
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!ok) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
70
ui/core_common/quihelper.h
Normal file
@@ -0,0 +1,70 @@
|
||||
#ifndef QUIHELPER2_H
|
||||
#define QUIHELPER2_H
|
||||
|
||||
#include "head.h"
|
||||
|
||||
class QUIHelper
|
||||
{
|
||||
public:
|
||||
//获取当前鼠标所在屏幕索引+尺寸
|
||||
static int getScreenIndex();
|
||||
static QRect getScreenRect(bool available = true);
|
||||
|
||||
//获取桌面宽度高度+居中显示
|
||||
static int deskWidth();
|
||||
static int deskHeight();
|
||||
|
||||
//居中显示窗体
|
||||
//定义标志位指定是以桌面为参照还是主程序界面为参照
|
||||
static QWidget *centerBaseForm;
|
||||
static void setFormInCenter(QWidget *form);
|
||||
|
||||
//程序文件名称+当前所在路径
|
||||
static QString appName();
|
||||
static QString appPath();
|
||||
|
||||
//获取uuid+初始化随机数种子+新建目录+延时
|
||||
static QString getUuid();
|
||||
static void initRand();
|
||||
static void newDir(const QString &dirName);
|
||||
static void sleep(int msec);
|
||||
|
||||
//设置样式+字体+编码+居中+翻译
|
||||
static void setStyle();
|
||||
static void setFont(int fontSize = 12);
|
||||
static void setCode(bool utf8 = true);
|
||||
static void setTranslator(const QString &qmFile);
|
||||
//一次性设置所有
|
||||
static void initAll();
|
||||
|
||||
//设置无边框
|
||||
static void setFramelessForm(QWidget *widgetMain, bool tool = false, bool top = false, bool menu = true);
|
||||
|
||||
//弹出框
|
||||
static int showMessageBox(const QString &info, int type = 0, int closeSec = 0, bool exec = false);
|
||||
//弹出消息框
|
||||
static void showMessageBoxInfo(const QString &info, int closeSec = 0, bool exec = false);
|
||||
//弹出错误框
|
||||
static void showMessageBoxError(const QString &info, int closeSec = 0, bool exec = false);
|
||||
//弹出询问框
|
||||
static int showMessageBoxQuestion(const QString &info);
|
||||
|
||||
//异或加密-只支持字符,如果是中文需要将其转换base64编码
|
||||
static QString getXorEncryptDecrypt(const QString &value, char key);
|
||||
//异或校验
|
||||
static uchar getOrCode(const QByteArray &data);
|
||||
//计算校验码
|
||||
static uchar 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);
|
||||
};
|
||||
|
||||
#endif // QUIHELPER2_H
|
||||
23
ui/core_qss/qss.qrc
Normal file
@@ -0,0 +1,23 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>qss/psblack.css</file>
|
||||
<file>qss/psblack/add_bottom.png</file>
|
||||
<file>qss/psblack/add_left.png</file>
|
||||
<file>qss/psblack/add_right.png</file>
|
||||
<file>qss/psblack/add_top.png</file>
|
||||
<file>qss/psblack/branch_close.png</file>
|
||||
<file>qss/psblack/branch_open.png</file>
|
||||
<file>qss/psblack/calendar_nextmonth.png</file>
|
||||
<file>qss/psblack/calendar_prevmonth.png</file>
|
||||
<file>qss/psblack/checkbox_checked.png</file>
|
||||
<file>qss/psblack/checkbox_checked_disable.png</file>
|
||||
<file>qss/psblack/checkbox_parcial.png</file>
|
||||
<file>qss/psblack/checkbox_parcial_disable.png</file>
|
||||
<file>qss/psblack/checkbox_unchecked.png</file>
|
||||
<file>qss/psblack/checkbox_unchecked_disable.png</file>
|
||||
<file>qss/psblack/radiobutton_checked.png</file>
|
||||
<file>qss/psblack/radiobutton_checked_disable.png</file>
|
||||
<file>qss/psblack/radiobutton_unchecked.png</file>
|
||||
<file>qss/psblack/radiobutton_unchecked_disable.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
675
ui/core_qss/qss/psblack.css
Normal file
@@ -0,0 +1,675 @@
|
||||
QPalette{background:#444444;}*{outline:0px;color:#DCDCDC;}
|
||||
|
||||
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:3ex;
|
||||
}
|
||||
|
||||
.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/psblack/radiobutton_unchecked.png);
|
||||
}
|
||||
|
||||
QRadioButton::indicator::unchecked:disabled{
|
||||
image:url(:/qss/psblack/radiobutton_unchecked_disable.png);
|
||||
}
|
||||
|
||||
QRadioButton::indicator::checked{
|
||||
image:url(:/qss/psblack/radiobutton_checked.png);
|
||||
}
|
||||
|
||||
QRadioButton::indicator::checked:disabled{
|
||||
image:url(:/qss/psblack/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/psblack/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/psblack/checkbox_unchecked_disable.png);
|
||||
}
|
||||
|
||||
QCheckBox::indicator:checked,QGroupBox::indicator:checked,QTreeView::indicator:checked,QListView::indicator:checked,QTableView::indicator:checked{
|
||||
image:url(:/qss/psblack/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/psblack/checkbox_checked_disable.png);
|
||||
}
|
||||
|
||||
QCheckBox::indicator:indeterminate,QGroupBox::indicator:indeterminate,QTreeView::indicator:indeterminate,QListView::indicator:indeterminate,QTableView::indicator:indeterminate{
|
||||
image:url(:/qss/psblack/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/psblack/checkbox_parcial_disable.png);
|
||||
}
|
||||
|
||||
QTimeEdit::up-button,QDateEdit::up-button,QDateTimeEdit::up-button,QDoubleSpinBox::up-button,QSpinBox::up-button{
|
||||
image:url(:/qss/psblack/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/psblack/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/psblack/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/psblack/menu_checked.png);
|
||||
}
|
||||
|
||||
QMenu::right-arrow{
|
||||
image:url(:/qss/psblack/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{
|
||||
background:#484848;
|
||||
height:8px;
|
||||
border-radius:4px;
|
||||
}
|
||||
|
||||
QSlider::add-page:horizontal{
|
||||
background:#484848;
|
||||
height:8px;
|
||||
border-radius:4px;
|
||||
}
|
||||
|
||||
QSlider::sub-page:horizontal{
|
||||
background:#242424;
|
||||
height:8px;
|
||||
border-radius:4px;
|
||||
}
|
||||
|
||||
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:#484848;
|
||||
}
|
||||
|
||||
QSlider::sub-page:vertical{
|
||||
width:8px;
|
||||
border-radius:4px;
|
||||
background:#242424;
|
||||
}
|
||||
|
||||
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/psblack/branch_open.png);
|
||||
}
|
||||
|
||||
QTreeView::branch:open:has-children{
|
||||
margin:4px;
|
||||
border-image:url(:/qss/psblack/branch_close.png);
|
||||
}
|
||||
|
||||
QTreeView,QListView,QTableView,QSplitter::handle,QTreeView::branch{
|
||||
background:#444444;
|
||||
}
|
||||
|
||||
QTableView::item:selected,QListView::item:selected,QTreeView::item:selected{
|
||||
color:#DCDCDC;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);
|
||||
}
|
||||
|
||||
QTableView::item:hover,QListView::item:hover,QTreeView::item:hover,QHeaderView{
|
||||
color:#DCDCDC;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252);
|
||||
}
|
||||
|
||||
QTableView::item,QListView::item,QTreeView::item{
|
||||
padding:1px;
|
||||
margin:0px;
|
||||
}
|
||||
|
||||
QHeaderView::section,QTableCornerButton:section{
|
||||
padding:3px;
|
||||
margin:0px;
|
||||
color:#DCDCDC;
|
||||
border:1px solid #242424;
|
||||
border-left-width:0px;
|
||||
border-right-width:1px;
|
||||
border-top-width:0px;
|
||||
border-bottom-width:1px;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252);
|
||||
}
|
||||
|
||||
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,QTabBar::tab:hover{
|
||||
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,QTabBar::tab:top:hover{
|
||||
border-width:2px 0px 0px 0px;
|
||||
}
|
||||
|
||||
QTabBar::tab:right:selected,QTabBar::tab:right:hover{
|
||||
border-width:0px 0px 0px 2px;
|
||||
}
|
||||
|
||||
QTabBar::tab:bottom:selected,QTabBar::tab:bottom:hover{
|
||||
border-width:0px 0px 2px 0px;
|
||||
}
|
||||
|
||||
QTabBar::tab:left:selected,QTabBar::tab:left:hover{
|
||||
border-width:0px 2px 0px 0px;
|
||||
}
|
||||
|
||||
QTabBar::tab:first:top:selected,QTabBar::tab:first:top:hover,QTabBar::tab:first:bottom:selected,QTabBar::tab:first:bottom:hover{
|
||||
border-left-width:1px;
|
||||
border-left-color:#242424;
|
||||
}
|
||||
|
||||
QTabBar::tab:first:left:selected,QTabBar::tab:first:left:hover,QTabBar::tab:first:right:selected,QTabBar::tab:first:right:hover{
|
||||
border-top-width:1px;
|
||||
border-top-color:#242424;
|
||||
}
|
||||
|
||||
QTabBar::tab:last:top:selected,QTabBar::tab:last:top:hover,QTabBar::tab:last:bottom:selected,QTabBar::tab:last:bottom:hover{
|
||||
border-right-width:1px;
|
||||
border-right-color:#242424;
|
||||
}
|
||||
|
||||
QTabBar::tab:last:left:selected,QTabBar::tab:last:left:hover,QTabBar::tab:last:right:selected,QTabBar::tab:last:right:hover{
|
||||
border-bottom-width:1px;
|
||||
border-bottom-color:#242424;
|
||||
}
|
||||
|
||||
QStatusBar::item{
|
||||
border:0px solid #484848;
|
||||
border-radius:3px;
|
||||
}
|
||||
|
||||
QToolBox::tab,QGroupBox#gboxDevicePanel,QGroupBox#gboxDeviceTitle,QFrame#gboxDevicePanel,QFrame#gboxDeviceTitle{
|
||||
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);
|
||||
}
|
||||
|
||||
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/psblack/calendar_prevmonth.png);
|
||||
}
|
||||
|
||||
QToolButton#qt_calendar_nextmonth{
|
||||
icon-size:0px;
|
||||
min-width:20px;
|
||||
image:url(:/qss/psblack/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[noboder="true"],QTreeView[noboder="true"],QTabWidget[noboder="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;
|
||||
}
|
||||
|
||||
/*TextColor:#DCDCDC*/
|
||||
/*PanelColor:#444444*/
|
||||
/*BorderColor:#242424*/
|
||||
/*NormalColorStart:#484848*/
|
||||
/*NormalColorEnd:#383838*/
|
||||
/*DarkColorStart:#646464*/
|
||||
/*DarkColorEnd:#525252*/
|
||||
/*HighColor:#AAAAAA*/
|
||||
BIN
ui/core_qss/qss/psblack/add_bottom.png
Normal file
|
After Width: | Height: | Size: 335 B |
BIN
ui/core_qss/qss/psblack/add_left.png
Normal file
|
After Width: | Height: | Size: 377 B |
BIN
ui/core_qss/qss/psblack/add_right.png
Normal file
|
After Width: | Height: | Size: 352 B |
BIN
ui/core_qss/qss/psblack/add_top.png
Normal file
|
After Width: | Height: | Size: 348 B |
BIN
ui/core_qss/qss/psblack/arrow_bottom.png
Normal file
|
After Width: | Height: | Size: 335 B |
BIN
ui/core_qss/qss/psblack/arrow_left.png
Normal file
|
After Width: | Height: | Size: 370 B |
BIN
ui/core_qss/qss/psblack/arrow_right.png
Normal file
|
After Width: | Height: | Size: 354 B |
BIN
ui/core_qss/qss/psblack/arrow_top.png
Normal file
|
After Width: | Height: | Size: 349 B |
BIN
ui/core_qss/qss/psblack/branch_close.png
Normal file
|
After Width: | Height: | Size: 257 B |
BIN
ui/core_qss/qss/psblack/branch_open.png
Normal file
|
After Width: | Height: | Size: 445 B |
BIN
ui/core_qss/qss/psblack/calendar_nextmonth.png
Normal file
|
After Width: | Height: | Size: 623 B |
BIN
ui/core_qss/qss/psblack/calendar_prevmonth.png
Normal file
|
After Width: | Height: | Size: 667 B |
BIN
ui/core_qss/qss/psblack/checkbox_checked.png
Normal file
|
After Width: | Height: | Size: 593 B |
BIN
ui/core_qss/qss/psblack/checkbox_checked_disable.png
Normal file
|
After Width: | Height: | Size: 656 B |
BIN
ui/core_qss/qss/psblack/checkbox_parcial.png
Normal file
|
After Width: | Height: | Size: 326 B |
BIN
ui/core_qss/qss/psblack/checkbox_parcial_disable.png
Normal file
|
After Width: | Height: | Size: 333 B |
BIN
ui/core_qss/qss/psblack/checkbox_unchecked.png
Normal file
|
After Width: | Height: | Size: 572 B |
BIN
ui/core_qss/qss/psblack/checkbox_unchecked_disable.png
Normal file
|
After Width: | Height: | Size: 624 B |
BIN
ui/core_qss/qss/psblack/menu_checked.png
Normal file
|
After Width: | Height: | Size: 501 B |
BIN
ui/core_qss/qss/psblack/radiobutton_checked.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
ui/core_qss/qss/psblack/radiobutton_checked_disable.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
ui/core_qss/qss/psblack/radiobutton_unchecked.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
ui/core_qss/qss/psblack/radiobutton_unchecked_disable.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
170
ui/flatui/flatui.cpp
Normal file
@@ -0,0 +1,170 @@
|
||||
#pragma execution_character_set("utf-8")
|
||||
|
||||
#include "flatui.h"
|
||||
#include "qpushbutton.h"
|
||||
#include "qlineedit.h"
|
||||
#include "qprogressbar.h"
|
||||
#include "qslider.h"
|
||||
#include "qradiobutton.h"
|
||||
#include "qcheckbox.h"
|
||||
#include "qscrollbar.h"
|
||||
#include "qdebug.h"
|
||||
|
||||
QString FlatUI::setPushButtonQss(QPushButton *btn, int radius, int padding,
|
||||
const QString &normalColor,
|
||||
const QString &normalTextColor,
|
||||
const QString &hoverColor,
|
||||
const QString &hoverTextColor,
|
||||
const QString &pressedColor,
|
||||
const QString &pressedTextColor)
|
||||
{
|
||||
QStringList list;
|
||||
list.append(QString("QPushButton{border-style:none;padding:%1px;border-radius:%2px;color:%3;background:%4;}")
|
||||
.arg(padding).arg(radius).arg(normalTextColor).arg(normalColor));
|
||||
list.append(QString("QPushButton:hover{color:%1;background:%2;}")
|
||||
.arg(hoverTextColor).arg(hoverColor));
|
||||
list.append(QString("QPushButton:pressed{color:%1;background:%2;}")
|
||||
.arg(pressedTextColor).arg(pressedColor));
|
||||
|
||||
QString qss = list.join("");
|
||||
btn->setStyleSheet(qss);
|
||||
return qss;
|
||||
}
|
||||
|
||||
QString FlatUI::setLineEditQss(QLineEdit *txt, int radius, int borderWidth,
|
||||
const QString &normalColor,
|
||||
const QString &focusColor)
|
||||
{
|
||||
QStringList list;
|
||||
list.append(QString("QLineEdit{border-style:none;padding:3px;border-radius:%1px;border:%2px solid %3;}")
|
||||
.arg(radius).arg(borderWidth).arg(normalColor));
|
||||
list.append(QString("QLineEdit:focus{border:%1px solid %2;}")
|
||||
.arg(borderWidth).arg(focusColor));
|
||||
|
||||
QString qss = list.join("");
|
||||
txt->setStyleSheet(qss);
|
||||
return qss;
|
||||
}
|
||||
|
||||
QString FlatUI::setProgressQss(QProgressBar *bar, int barHeight,
|
||||
int barRadius, int fontSize,
|
||||
const QString &normalColor,
|
||||
const QString &chunkColor)
|
||||
{
|
||||
|
||||
QStringList list;
|
||||
list.append(QString("QProgressBar{font:%1pt;background:%2;max-height:%3px;border-radius:%4px;text-align:center;border:1px solid %2;}")
|
||||
.arg(fontSize).arg(normalColor).arg(barHeight).arg(barRadius));
|
||||
list.append(QString("QProgressBar:chunk{border-radius:%2px;background-color:%1;}")
|
||||
.arg(chunkColor).arg(barRadius));
|
||||
|
||||
QString qss = list.join("");
|
||||
bar->setStyleSheet(qss);
|
||||
return qss;
|
||||
}
|
||||
|
||||
QString FlatUI::setSliderQss(QSlider *slider, int sliderHeight,
|
||||
const QString &normalColor,
|
||||
const QString &grooveColor,
|
||||
const QString &handleBorderColor,
|
||||
const QString &handleColor)
|
||||
{
|
||||
int sliderRadius = sliderHeight / 2;
|
||||
int handleWidth = (sliderHeight * 3) / 2 + (sliderHeight / 5);
|
||||
int handleRadius = handleWidth / 2;
|
||||
int handleOffset = handleRadius / 2;
|
||||
|
||||
QStringList list;
|
||||
list.append(QString("QSlider::horizontal{min-height:%1px;}").arg(sliderHeight * 2));
|
||||
list.append(QString("QSlider::groove:horizontal{background:%1;height:%2px;border-radius:%3px;}")
|
||||
.arg(normalColor).arg(sliderHeight).arg(sliderRadius));
|
||||
list.append(QString("QSlider::add-page:horizontal{background:%1;height:%2px;border-radius:%3px;}")
|
||||
.arg(normalColor).arg(sliderHeight).arg(sliderRadius));
|
||||
list.append(QString("QSlider::sub-page:horizontal{background:%1;height:%2px;border-radius:%3px;}")
|
||||
.arg(grooveColor).arg(sliderHeight).arg(sliderRadius));
|
||||
list.append(QString("QSlider::handle:horizontal{width:%3px;margin-top:-%4px;margin-bottom:-%4px;border-radius:%5px;"
|
||||
"background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 %1,stop:0.8 %2);}")
|
||||
.arg(handleColor).arg(handleBorderColor).arg(handleWidth).arg(handleOffset).arg(handleRadius));
|
||||
|
||||
//偏移一个像素
|
||||
handleWidth = handleWidth + 1;
|
||||
list.append(QString("QSlider::vertical{min-width:%1px;}").arg(sliderHeight * 2));
|
||||
list.append(QString("QSlider::groove:vertical{background:%1;width:%2px;border-radius:%3px;}")
|
||||
.arg(normalColor).arg(sliderHeight).arg(sliderRadius));
|
||||
list.append(QString("QSlider::add-page:vertical{background:%1;width:%2px;border-radius:%3px;}")
|
||||
.arg(grooveColor).arg(sliderHeight).arg(sliderRadius));
|
||||
list.append(QString("QSlider::sub-page:vertical{background:%1;width:%2px;border-radius:%3px;}")
|
||||
.arg(normalColor).arg(sliderHeight).arg(sliderRadius));
|
||||
list.append(QString("QSlider::handle:vertical{height:%3px;margin-left:-%4px;margin-right:-%4px;border-radius:%5px;"
|
||||
"background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 %1,stop:0.8 %2);}")
|
||||
.arg(handleColor).arg(handleBorderColor).arg(handleWidth).arg(handleOffset).arg(handleRadius));
|
||||
|
||||
QString qss = list.join("");
|
||||
slider->setStyleSheet(qss);
|
||||
return qss;
|
||||
}
|
||||
|
||||
QString FlatUI::setRadioButtonQss(QRadioButton *rbtn, int indicatorRadius,
|
||||
const QString &normalColor,
|
||||
const QString &checkColor)
|
||||
{
|
||||
int indicatorWidth = indicatorRadius * 2;
|
||||
|
||||
QStringList list;
|
||||
list.append(QString("QRadioButton::indicator{border-radius:%1px;width:%2px;height:%2px;}")
|
||||
.arg(indicatorRadius).arg(indicatorWidth));
|
||||
list.append(QString("QRadioButton::indicator::unchecked{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.7 %1);}").arg(normalColor));
|
||||
list.append(QString("QRadioButton::indicator::checked{background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,"
|
||||
"stop:0 %1,stop:0.3 %1,stop:0.4 #FFFFFF,stop:0.6 #FFFFFF,stop:0.7 %1);}").arg(checkColor));
|
||||
|
||||
QString qss = list.join("");
|
||||
rbtn->setStyleSheet(qss);
|
||||
return qss;
|
||||
}
|
||||
|
||||
QString FlatUI::setScrollBarQss(QWidget *scroll, int radius, int min, int max,
|
||||
const QString &bgColor,
|
||||
const QString &handleNormalColor,
|
||||
const QString &handleHoverColor,
|
||||
const QString &handlePressedColor)
|
||||
{
|
||||
//滚动条离背景间隔
|
||||
int padding = 0;
|
||||
|
||||
QStringList list;
|
||||
|
||||
//handle:指示器,滚动条拉动部分 add-page:滚动条拉动时增加的部分 sub-page:滚动条拉动时减少的部分 add-line:递增按钮 sub-line:递减按钮
|
||||
|
||||
//横向滚动条部分
|
||||
list.append(QString("QScrollBar:horizontal{background:%1;padding:%2px;border-radius:%3px;min-height:%4px;max-height:%4px;}")
|
||||
.arg(bgColor).arg(padding).arg(radius).arg(max));
|
||||
list.append(QString("QScrollBar::handle:horizontal{background:%1;min-width:%2px;border-radius:%3px;}")
|
||||
.arg(handleNormalColor).arg(min).arg(radius));
|
||||
list.append(QString("QScrollBar::handle:horizontal:hover{background:%1;}")
|
||||
.arg(handleHoverColor));
|
||||
list.append(QString("QScrollBar::handle:horizontal:pressed{background:%1;}")
|
||||
.arg(handlePressedColor));
|
||||
list.append(QString("QScrollBar::add-page:horizontal{background:none;}"));
|
||||
list.append(QString("QScrollBar::sub-page:horizontal{background:none;}"));
|
||||
list.append(QString("QScrollBar::add-line:horizontal{background:none;}"));
|
||||
list.append(QString("QScrollBar::sub-line:horizontal{background:none;}"));
|
||||
|
||||
//纵向滚动条部分
|
||||
list.append(QString("QScrollBar:vertical{background:%1;padding:%2px;border-radius:%3px;min-width:%4px;max-width:%4px;}")
|
||||
.arg(bgColor).arg(padding).arg(radius).arg(max));
|
||||
list.append(QString("QScrollBar::handle:vertical{background:%1;min-height:%2px;border-radius:%3px;}")
|
||||
.arg(handleNormalColor).arg(min).arg(radius));
|
||||
list.append(QString("QScrollBar::handle:vertical:hover{background:%1;}")
|
||||
.arg(handleHoverColor));
|
||||
list.append(QString("QScrollBar::handle:vertical:pressed{background:%1;}")
|
||||
.arg(handlePressedColor));
|
||||
list.append(QString("QScrollBar::add-page:vertical{background:none;}"));
|
||||
list.append(QString("QScrollBar::sub-page:vertical{background:none;}"));
|
||||
list.append(QString("QScrollBar::add-line:vertical{background:none;}"));
|
||||
list.append(QString("QScrollBar::sub-line:vertical{background:none;}"));
|
||||
|
||||
QString qss = list.join("");
|
||||
scroll->setStyleSheet(qss);
|
||||
return qss;
|
||||
}
|
||||
85
ui/flatui/flatui.h
Normal file
@@ -0,0 +1,85 @@
|
||||
#ifndef FLATUI_H
|
||||
#define FLATUI_H
|
||||
|
||||
/**
|
||||
* FlatUI辅助类 作者:feiyangqingyun(QQ:517216493) 2016-12-16
|
||||
* 1. 按钮样式设置。
|
||||
* 2. 文本框样式设置。
|
||||
* 3. 进度条样式。
|
||||
* 4. 滑块条样式。
|
||||
* 5. 单选框样式。
|
||||
* 6. 滚动条样式。
|
||||
* 7. 可自由设置对象的高度宽度大小等。
|
||||
* 8. 自带默认参数值。
|
||||
*/
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class QPushButton;
|
||||
class QLineEdit;
|
||||
class QProgressBar;
|
||||
class QSlider;
|
||||
class QRadioButton;
|
||||
class QCheckBox;
|
||||
class QScrollBar;
|
||||
|
||||
#ifdef quc
|
||||
class Q_DECL_EXPORT FlatUI
|
||||
#else
|
||||
class FlatUI
|
||||
#endif
|
||||
|
||||
{
|
||||
public:
|
||||
//设置按钮样式
|
||||
static QString setPushButtonQss(QPushButton *btn, //按钮对象
|
||||
int radius = 5, //圆角半径
|
||||
int padding = 8, //间距
|
||||
const QString &normalColor = "#34495E", //正常颜色
|
||||
const QString &normalTextColor = "#FFFFFF", //文字颜色
|
||||
const QString &hoverColor = "#4E6D8C", //悬停颜色
|
||||
const QString &hoverTextColor = "#F0F0F0", //悬停文字颜色
|
||||
const QString &pressedColor = "#2D3E50", //按下颜色
|
||||
const QString &pressedTextColor = "#B8C6D1"); //按下文字颜色
|
||||
|
||||
//设置文本框样式
|
||||
static QString setLineEditQss(QLineEdit *txt, //文本框对象
|
||||
int radius = 3, //圆角半径
|
||||
int borderWidth = 2, //边框大小
|
||||
const QString &normalColor = "#DCE4EC", //正常颜色
|
||||
const QString &focusColor = "#34495E"); //选中颜色
|
||||
|
||||
//设置进度条样式
|
||||
static QString setProgressQss(QProgressBar *bar,
|
||||
int barHeight = 8, //进度条高度
|
||||
int barRadius = 5, //进度条半径
|
||||
int fontSize = 9, //文字字号
|
||||
const QString &normalColor = "#E8EDF2", //正常颜色
|
||||
const QString &chunkColor = "#E74C3C"); //进度颜色
|
||||
|
||||
//设置滑块条样式
|
||||
static QString setSliderQss(QSlider *slider, //滑动条对象
|
||||
int sliderHeight = 8, //滑动条高度
|
||||
const QString &normalColor = "#E8EDF2", //正常颜色
|
||||
const QString &grooveColor = "#1ABC9C", //滑块颜色
|
||||
const QString &handleBorderColor = "#1ABC9C", //指示器边框颜色
|
||||
const QString &handleColor = "#FFFFFF"); //指示器颜色
|
||||
|
||||
//设置单选框样式
|
||||
static QString setRadioButtonQss(QRadioButton *rbtn, //单选框对象
|
||||
int indicatorRadius = 8, //指示器圆角角度
|
||||
const QString &normalColor = "#D7DBDE", //正常颜色
|
||||
const QString &checkColor = "#34495E"); //选中颜色
|
||||
|
||||
//设置滚动条样式
|
||||
static QString setScrollBarQss(QWidget *scroll, //滚动条对象
|
||||
int radius = 6, //圆角角度
|
||||
int min = 120, //指示器最小长度
|
||||
int max = 12, //滚动条最大长度
|
||||
const QString &bgColor = "#606060", //背景色
|
||||
const QString &handleNormalColor = "#34495E", //指示器正常颜色
|
||||
const QString &handleHoverColor = "#1ABC9C", //指示器悬停颜色
|
||||
const QString &handlePressedColor = "#E74C3C"); //指示器按下颜色
|
||||
};
|
||||
|
||||
#endif // FLATUI_H
|
||||
17
ui/flatui/flatui.pro
Normal file
@@ -0,0 +1,17 @@
|
||||
QT += core gui
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
greaterThan(QT_MAJOR_VERSION, 5): QT += core5compat
|
||||
|
||||
TARGET = flatui
|
||||
TEMPLATE = app
|
||||
DESTDIR = $$PWD/../bin
|
||||
CONFIG += warn_off
|
||||
|
||||
SOURCES += main.cpp
|
||||
SOURCES += frmflatui.cpp
|
||||
SOURCES += flatui.cpp
|
||||
|
||||
HEADERS += frmflatui.h
|
||||
HEADERS += flatui.h
|
||||
|
||||
FORMS += frmflatui.ui
|
||||
96
ui/flatui/frmflatui.cpp
Normal file
@@ -0,0 +1,96 @@
|
||||
#pragma execution_character_set("utf-8")
|
||||
|
||||
#include "frmflatui.h"
|
||||
#include "ui_frmflatui.h"
|
||||
#include "flatui.h"
|
||||
#include "qdebug.h"
|
||||
#include "qdatetime.h"
|
||||
|
||||
frmFlatUI::frmFlatUI(QWidget *parent) : QWidget(parent), ui(new Ui::frmFlatUI)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
this->initForm();
|
||||
}
|
||||
|
||||
frmFlatUI::~frmFlatUI()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void frmFlatUI::initForm()
|
||||
{
|
||||
ui->bar1->setRange(0, 100);
|
||||
ui->bar2->setRange(0, 100);
|
||||
ui->slider1->setRange(0, 100);
|
||||
ui->slider2->setRange(0, 100);
|
||||
|
||||
connect(ui->slider1, SIGNAL(valueChanged(int)), ui->bar1, SLOT(setValue(int)));
|
||||
connect(ui->slider2, SIGNAL(valueChanged(int)), ui->bar2, SLOT(setValue(int)));
|
||||
ui->slider1->setValue(30);
|
||||
ui->slider2->setValue(30);
|
||||
|
||||
this->setStyleSheet("*{outline:0px;}QWidget#frmFlatUI{background:#FFFFFF;}");
|
||||
|
||||
FlatUI::setPushButtonQss(ui->btn1);
|
||||
FlatUI::setPushButtonQss(ui->btn2, 5, 8, "#1ABC9C", "#E6F8F5", "#2EE1C1", "#FFFFFF", "#16A086", "#A7EEE6");
|
||||
FlatUI::setPushButtonQss(ui->btn3, 5, 8, "#3498DB", "#FFFFFF", "#5DACE4", "#E5FEFF", "#2483C7", "#A0DAFB");
|
||||
FlatUI::setPushButtonQss(ui->btn4, 5, 8, "#E74C3C", "#FFFFFF", "#EC7064", "#FFF5E7", "#DC2D1A", "#F5A996");
|
||||
|
||||
FlatUI::setLineEditQss(ui->txt1);
|
||||
FlatUI::setLineEditQss(ui->txt2, 5, 2, "#DCE4EC", "#1ABC9C");
|
||||
FlatUI::setLineEditQss(ui->txt3, 3, 1, "#DCE4EC", "#3498DB");
|
||||
FlatUI::setLineEditQss(ui->txt4, 3, 1, "#DCE4EC", "#E74C3C");
|
||||
|
||||
FlatUI::setProgressQss(ui->bar1);
|
||||
FlatUI::setProgressQss(ui->bar2, 8, 5, 9, "#E8EDF2", "#1ABC9C");
|
||||
|
||||
FlatUI::setSliderQss(ui->slider1);
|
||||
FlatUI::setSliderQss(ui->slider2, 10, "#E8EDF2", "#E74C3C", "#E74C3C");
|
||||
FlatUI::setSliderQss(ui->slider3, 10, "#E8EDF2", "#34495E", "#34495E");
|
||||
|
||||
FlatUI::setRadioButtonQss(ui->rbtn1);
|
||||
FlatUI::setRadioButtonQss(ui->rbtn2, 8, "#D7DBDE", "#1ABC9C");
|
||||
FlatUI::setRadioButtonQss(ui->rbtn3, 8, "#D7DBDE", "#3498DB");
|
||||
FlatUI::setRadioButtonQss(ui->rbtn4, 8, "#D7DBDE", "#E74C3C");
|
||||
|
||||
FlatUI::setScrollBarQss(ui->horizontalScrollBar);
|
||||
FlatUI::setScrollBarQss(ui->verticalScrollBar, 8, 120, 20, "#606060", "#34495E", "#1ABC9C", "#E74C3C");
|
||||
|
||||
//设置列数和列宽
|
||||
int width = 1920;
|
||||
ui->tableWidget->setColumnCount(5);
|
||||
ui->tableWidget->setColumnWidth(0, width * 0.06);
|
||||
ui->tableWidget->setColumnWidth(1, width * 0.10);
|
||||
ui->tableWidget->setColumnWidth(2, width * 0.06);
|
||||
ui->tableWidget->setColumnWidth(3, width * 0.10);
|
||||
ui->tableWidget->setColumnWidth(4, width * 0.20);
|
||||
ui->tableWidget->verticalHeader()->setDefaultSectionSize(25);
|
||||
|
||||
QStringList headText;
|
||||
headText << "设备编号" << "设备名称" << "设备地址" << "告警内容" << "告警时间";
|
||||
ui->tableWidget->setHorizontalHeaderLabels(headText);
|
||||
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
||||
ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||
ui->tableWidget->setAlternatingRowColors(true);
|
||||
ui->tableWidget->verticalHeader()->setVisible(false);
|
||||
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
|
||||
|
||||
//设置行高
|
||||
ui->tableWidget->setRowCount(300);
|
||||
|
||||
for (int i = 0; i < 300; i++) {
|
||||
ui->tableWidget->setRowHeight(i, 24);
|
||||
QTableWidgetItem *itemDeviceID = new QTableWidgetItem(QString::number(i + 1));
|
||||
QTableWidgetItem *itemDeviceName = new QTableWidgetItem(QString("测试设备%1").arg(i + 1));
|
||||
QTableWidgetItem *itemDeviceAddr = new QTableWidgetItem(QString::number(i + 1));
|
||||
QTableWidgetItem *itemContent = new QTableWidgetItem("防区告警");
|
||||
QTableWidgetItem *itemTime = new QTableWidgetItem(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
|
||||
|
||||
ui->tableWidget->setItem(i, 0, itemDeviceID);
|
||||
ui->tableWidget->setItem(i, 1, itemDeviceName);
|
||||
ui->tableWidget->setItem(i, 2, itemDeviceAddr);
|
||||
ui->tableWidget->setItem(i, 3, itemContent);
|
||||
ui->tableWidget->setItem(i, 4, itemTime);
|
||||
}
|
||||
}
|
||||
25
ui/flatui/frmflatui.h
Normal file
@@ -0,0 +1,25 @@
|
||||
#ifndef FRMFLATUI_H
|
||||
#define FRMFLATUI_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
namespace Ui {
|
||||
class frmFlatUI;
|
||||
}
|
||||
|
||||
class frmFlatUI : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit frmFlatUI(QWidget *parent = 0);
|
||||
~frmFlatUI();
|
||||
|
||||
private:
|
||||
Ui::frmFlatUI *ui;
|
||||
|
||||
private slots:
|
||||
void initForm();
|
||||
};
|
||||
|
||||
#endif // FRMFLATUI_H
|
||||
203
ui/flatui/frmflatui.ui
Normal file
@@ -0,0 +1,203 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>frmFlatUI</class>
|
||||
<widget class="QWidget" name="frmFlatUI">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="7" column="0">
|
||||
<widget class="QRadioButton" name="rbtn1">
|
||||
<property name="text">
|
||||
<string>语文</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QPushButton" name="btn3">
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>测试按钮</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QLineEdit" name="txt3"/>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="btn2">
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>测试按钮</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="4" rowspan="9">
|
||||
<widget class="QSlider" name="slider3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="invertedControls">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::NoTicks</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="1">
|
||||
<widget class="QRadioButton" name="rbtn2">
|
||||
<property name="text">
|
||||
<string>英语</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="2" colspan="2">
|
||||
<widget class="QProgressBar" name="bar2">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>24</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="4">
|
||||
<widget class="QScrollBar" name="horizontalScrollBar">
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="3">
|
||||
<widget class="QRadioButton" name="rbtn4">
|
||||
<property name="text">
|
||||
<string>历史</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="2">
|
||||
<widget class="QRadioButton" name="rbtn3">
|
||||
<property name="text">
|
||||
<string>数学</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QPushButton" name="btn4">
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>测试按钮</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="txt2"/>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLineEdit" name="txt4"/>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="btn1">
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>测试按钮</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLineEdit" name="txt1"/>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QProgressBar" name="bar1">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>16</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>24</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5" rowspan="9">
|
||||
<widget class="QScrollBar" name="verticalScrollBar">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QSlider" name="slider1">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2" colspan="2">
|
||||
<widget class="QSlider" name="slider2">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>255</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0" colspan="6">
|
||||
<widget class="QTableWidget" name="tableWidget">
|
||||
<property name="styleSheet">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="gridStyle">
|
||||
<enum>Qt::DashDotLine</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
31
ui/flatui/main.cpp
Normal file
@@ -0,0 +1,31 @@
|
||||
#pragma execution_character_set("utf-8")
|
||||
|
||||
#include "frmflatui.h"
|
||||
#include <QApplication>
|
||||
#include <QTextCodec>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
a.setFont(QFont("Microsoft Yahei", 9));
|
||||
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(5,0,0))
|
||||
#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);
|
||||
#else
|
||||
QTextCodec *codec = QTextCodec::codecForName("utf-8");
|
||||
QTextCodec::setCodecForLocale(codec);
|
||||
#endif
|
||||
|
||||
frmFlatUI w;
|
||||
w.setWindowTitle("FlatUI控件集合");
|
||||
w.show();
|
||||
|
||||
return a.exec();
|
||||
}
|
||||
184
ui/styledemo/frmmain.cpp
Normal file
@@ -0,0 +1,184 @@
|
||||
#include "frmmain.h"
|
||||
#include "ui_frmmain.h"
|
||||
#include "head.h"
|
||||
|
||||
frmMain::frmMain(QWidget *parent) : QMainWindow(parent), ui(new Ui::frmMain)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
this->initForm();
|
||||
}
|
||||
|
||||
frmMain::~frmMain()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void frmMain::showEvent(QShowEvent *)
|
||||
{
|
||||
int width = ui->tabConfig->width() / ui->tabConfig->count() - 20;
|
||||
ui->tabConfig->setStyleSheet(QString("QTabBar::tab{min-width:%1px;}").arg(width));
|
||||
}
|
||||
|
||||
void frmMain::initForm()
|
||||
{
|
||||
this->initStyle();
|
||||
this->initTranslator();
|
||||
this->initTableWidget();
|
||||
this->initTreeWidget();
|
||||
this->initListWidget();
|
||||
this->initOther();
|
||||
|
||||
ui->rbtn1->setChecked(true);
|
||||
ui->ck2->setChecked(true);
|
||||
ui->ck3->setCheckState(Qt::PartiallyChecked);
|
||||
ui->tabWidget->setCurrentIndex(0);
|
||||
}
|
||||
|
||||
void frmMain::initStyle()
|
||||
{
|
||||
//加载样式表
|
||||
QString qss;
|
||||
//QFile file(":/qss/psblack.css");
|
||||
//QFile file(":/qss/flatwhite.css");
|
||||
QFile file(":/qss/lightblue.css");
|
||||
if (file.open(QFile::ReadOnly)) {
|
||||
#if 1
|
||||
//用QTextStream读取样式文件不用区分文件编码 带bom也行
|
||||
QStringList list;
|
||||
QTextStream in(&file);
|
||||
//in.setCodec("utf-8");
|
||||
while (!in.atEnd()) {
|
||||
QString line;
|
||||
in >> line;
|
||||
list << line;
|
||||
}
|
||||
|
||||
qss = list.join("\n");
|
||||
#else
|
||||
//用readAll读取默认支持的是ANSI格式,如果不小心用creator打开编辑过了很可能打不开
|
||||
qss = QLatin1String(file.readAll());
|
||||
#endif
|
||||
QString paletteColor = qss.mid(20, 7);
|
||||
qApp->setPalette(QPalette(paletteColor));
|
||||
qApp->setStyleSheet(qss);
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
|
||||
void frmMain::initTranslator()
|
||||
{
|
||||
//加载鼠标右键菜单翻译文件
|
||||
QTranslator *translator1 = new QTranslator(qApp);
|
||||
translator1->load(":/qm/qt_zh_CN.qm");
|
||||
qApp->installTranslator(translator1);
|
||||
|
||||
//加载富文本框鼠标右键菜单翻译文件
|
||||
QTranslator *translator2 = new QTranslator(qApp);
|
||||
translator2->load(":/qm/widgets.qm");
|
||||
qApp->installTranslator(translator2);
|
||||
}
|
||||
|
||||
void frmMain::initTableWidget()
|
||||
{
|
||||
//设置列数和列宽
|
||||
int width = 1920;
|
||||
ui->tableWidget->setColumnCount(5);
|
||||
ui->tableWidget->setColumnWidth(0, width * 0.06);
|
||||
ui->tableWidget->setColumnWidth(1, width * 0.10);
|
||||
ui->tableWidget->setColumnWidth(2, width * 0.06);
|
||||
ui->tableWidget->setColumnWidth(3, width * 0.10);
|
||||
ui->tableWidget->setColumnWidth(4, width * 0.15);
|
||||
ui->tableWidget->verticalHeader()->setDefaultSectionSize(25);
|
||||
|
||||
QStringList headText;
|
||||
headText << "设备编号" << "设备名称" << "设备地址" << "告警内容" << "告警时间";
|
||||
ui->tableWidget->setHorizontalHeaderLabels(headText);
|
||||
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
||||
ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||
ui->tableWidget->setAlternatingRowColors(true);
|
||||
ui->tableWidget->verticalHeader()->setVisible(false);
|
||||
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
|
||||
|
||||
//设置行高
|
||||
ui->tableWidget->setRowCount(300);
|
||||
|
||||
for (int i = 0; i < 300; i++) {
|
||||
ui->tableWidget->setRowHeight(i, 24);
|
||||
|
||||
QTableWidgetItem *itemDeviceID = new QTableWidgetItem(QString::number(i + 1));
|
||||
QTableWidgetItem *itemDeviceName = new QTableWidgetItem(QString("测试设备%1").arg(i + 1));
|
||||
QTableWidgetItem *itemDeviceAddr = new QTableWidgetItem(QString::number(i + 1));
|
||||
QTableWidgetItem *itemContent = new QTableWidgetItem("防区告警");
|
||||
QTableWidgetItem *itemTime = new QTableWidgetItem(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
|
||||
|
||||
ui->tableWidget->setItem(i, 0, itemDeviceID);
|
||||
ui->tableWidget->setItem(i, 1, itemDeviceName);
|
||||
ui->tableWidget->setItem(i, 2, itemDeviceAddr);
|
||||
ui->tableWidget->setItem(i, 3, itemContent);
|
||||
ui->tableWidget->setItem(i, 4, itemTime);
|
||||
}
|
||||
}
|
||||
|
||||
void frmMain::initTreeWidget()
|
||||
{
|
||||
ui->treeWidget->clear();
|
||||
ui->treeWidget->setHeaderLabel(" 树状列表控件");
|
||||
|
||||
QTreeWidgetItem *group1 = new QTreeWidgetItem(ui->treeWidget);
|
||||
group1->setText(0, "父元素1");
|
||||
group1->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
||||
group1->setCheckState(0, Qt::PartiallyChecked);
|
||||
|
||||
QTreeWidgetItem *subItem11 = new QTreeWidgetItem(group1);
|
||||
subItem11->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
||||
subItem11->setText(0, "子元素1");
|
||||
subItem11->setCheckState(0, Qt::Checked);
|
||||
|
||||
QTreeWidgetItem *subItem12 = new QTreeWidgetItem(group1);
|
||||
subItem12->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
||||
subItem12->setText(0, "子元素2");
|
||||
subItem12->setCheckState(0, Qt::Unchecked);
|
||||
|
||||
QTreeWidgetItem *subItem13 = new QTreeWidgetItem(group1);
|
||||
subItem13->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
||||
subItem13->setText(0, "子元素3");
|
||||
subItem13->setCheckState(0, Qt::Unchecked);
|
||||
|
||||
QTreeWidgetItem *group2 = new QTreeWidgetItem(ui->treeWidget);
|
||||
group2->setText(0, "父元素2");
|
||||
group2->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
||||
group2->setCheckState(0, Qt::Unchecked);
|
||||
|
||||
QTreeWidgetItem *subItem21 = new QTreeWidgetItem(group2);
|
||||
subItem21->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
||||
subItem21->setText(0, "子元素1");
|
||||
subItem21->setCheckState(0, Qt::Unchecked);
|
||||
|
||||
QTreeWidgetItem *subItem211 = new QTreeWidgetItem(subItem21);
|
||||
subItem211->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
||||
subItem211->setText(0, "子子元素1");
|
||||
subItem211->setCheckState(0, Qt::Unchecked);
|
||||
|
||||
ui->treeWidget->expandAll();
|
||||
}
|
||||
|
||||
void frmMain::initListWidget()
|
||||
{
|
||||
QStringList items;
|
||||
for (int i = 1; i <= 30; i++) {
|
||||
items << QString("元素%1").arg(i);
|
||||
}
|
||||
|
||||
ui->listWidget->addItems(items);
|
||||
ui->cbox1->addItems(items);
|
||||
ui->cbox2->addItems(items);
|
||||
}
|
||||
|
||||
void frmMain::initOther()
|
||||
{
|
||||
ui->horizontalSlider->setValue(88);
|
||||
ui->widgetLeft->setProperty("nav", "left");
|
||||
ui->widgetBottom->setProperty("form", "bottom");
|
||||
ui->widgetTop->setProperty("nav", "top");
|
||||
}
|
||||
34
ui/styledemo/frmmain.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#ifndef FRMMAIN_H
|
||||
#define FRMMAIN_H
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
namespace Ui {
|
||||
class frmMain;
|
||||
}
|
||||
|
||||
class frmMain : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit frmMain(QWidget *parent = 0);
|
||||
~frmMain();
|
||||
|
||||
protected:
|
||||
void showEvent(QShowEvent *);
|
||||
|
||||
private:
|
||||
Ui::frmMain *ui;
|
||||
|
||||
private slots:
|
||||
void initForm();
|
||||
void initStyle();
|
||||
void initTranslator();
|
||||
void initTableWidget();
|
||||
void initTreeWidget();
|
||||
void initListWidget();
|
||||
void initOther();
|
||||
};
|
||||
|
||||
#endif // FRMMAIN_H
|
||||
1168
ui/styledemo/frmmain.ui
Normal file
12
ui/styledemo/head.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#include <QtCore>
|
||||
#include <QtGui>
|
||||
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
|
||||
#include <QtWidgets>
|
||||
#endif
|
||||
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
|
||||
#include <QtCore5Compat>
|
||||
#endif
|
||||
|
||||
#pragma execution_character_set("utf-8")
|
||||
37
ui/styledemo/main.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
#include "frmmain.h"
|
||||
#include "head.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
//设置不应用操作系统设置比如字体
|
||||
QApplication::setDesktopSettingsAware(false);
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5,14,0))
|
||||
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::Floor);
|
||||
#endif
|
||||
QApplication a(argc, argv);
|
||||
//a.setFont(QFont("Microsoft Yahei", 9));
|
||||
QFont font;
|
||||
font.setFamily("Microsoft Yahei");
|
||||
font.setPixelSize(12);
|
||||
a.setFont(font);
|
||||
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(5,0,0))
|
||||
#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);
|
||||
#else
|
||||
QTextCodec *codec = QTextCodec::codecForName("utf-8");
|
||||
QTextCodec::setCodecForLocale(codec);
|
||||
#endif
|
||||
|
||||
frmMain w;
|
||||
w.setWindowTitle("样式表示例 (QQ: 517216493 WX: feiyangqingyun)");
|
||||
w.show();
|
||||
|
||||
return a.exec();
|
||||
}
|
||||
5
ui/styledemo/qrc/font.qrc
Normal file
@@ -0,0 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>font/fontawesome-webfont.ttf</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
BIN
ui/styledemo/qrc/font/Font Awesome Cheatsheet.png
Normal file
|
After Width: | Height: | Size: 968 KiB |
BIN
ui/styledemo/qrc/font/fontawesome-webfont.ttf
Normal file
BIN
ui/styledemo/qrc/image/btn_close.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
ui/styledemo/qrc/image/btn_ok.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
ui/styledemo/qrc/image/msg_error.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
ui/styledemo/qrc/image/msg_info.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
ui/styledemo/qrc/image/msg_question.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
9
ui/styledemo/qrc/main.qrc
Normal file
@@ -0,0 +1,9 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>image/btn_close.png</file>
|
||||
<file>image/btn_ok.png</file>
|
||||
<file>image/msg_error.png</file>
|
||||
<file>image/msg_info.png</file>
|
||||
<file>image/msg_question.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
6
ui/styledemo/qrc/qm.qrc
Normal file
@@ -0,0 +1,6 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>qm/qt_zh_CN.qm</file>
|
||||
<file>qm/widgets.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
BIN
ui/styledemo/qrc/qm/qt_zh_CN.qm
Normal file
BIN
ui/styledemo/qrc/qm/widgets.qm
Normal file
76
ui/styledemo/qrc/qss.qrc
Normal file
@@ -0,0 +1,76 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>qss/flatwhite.css</file>
|
||||
<file>qss/lightblue.css</file>
|
||||
<file>qss/psblack.css</file>
|
||||
<file>qss/flatwhite/add_bottom.png</file>
|
||||
<file>qss/flatwhite/add_left.png</file>
|
||||
<file>qss/flatwhite/add_right.png</file>
|
||||
<file>qss/flatwhite/add_top.png</file>
|
||||
<file>qss/flatwhite/arrow_bottom.png</file>
|
||||
<file>qss/flatwhite/arrow_left.png</file>
|
||||
<file>qss/flatwhite/arrow_right.png</file>
|
||||
<file>qss/flatwhite/arrow_top.png</file>
|
||||
<file>qss/flatwhite/branch_close.png</file>
|
||||
<file>qss/flatwhite/branch_open.png</file>
|
||||
<file>qss/flatwhite/calendar_nextmonth.png</file>
|
||||
<file>qss/flatwhite/calendar_prevmonth.png</file>
|
||||
<file>qss/flatwhite/checkbox_checked.png</file>
|
||||
<file>qss/flatwhite/checkbox_checked_disable.png</file>
|
||||
<file>qss/flatwhite/checkbox_parcial.png</file>
|
||||
<file>qss/flatwhite/checkbox_parcial_disable.png</file>
|
||||
<file>qss/flatwhite/checkbox_unchecked.png</file>
|
||||
<file>qss/flatwhite/checkbox_unchecked_disable.png</file>
|
||||
<file>qss/flatwhite/menu_checked.png</file>
|
||||
<file>qss/flatwhite/radiobutton_checked.png</file>
|
||||
<file>qss/flatwhite/radiobutton_checked_disable.png</file>
|
||||
<file>qss/flatwhite/radiobutton_unchecked.png</file>
|
||||
<file>qss/flatwhite/radiobutton_unchecked_disable.png</file>
|
||||
<file>qss/lightblue/add_bottom.png</file>
|
||||
<file>qss/lightblue/add_left.png</file>
|
||||
<file>qss/lightblue/add_right.png</file>
|
||||
<file>qss/lightblue/add_top.png</file>
|
||||
<file>qss/lightblue/arrow_bottom.png</file>
|
||||
<file>qss/lightblue/arrow_left.png</file>
|
||||
<file>qss/lightblue/arrow_right.png</file>
|
||||
<file>qss/lightblue/arrow_top.png</file>
|
||||
<file>qss/lightblue/branch_close.png</file>
|
||||
<file>qss/lightblue/branch_open.png</file>
|
||||
<file>qss/lightblue/calendar_nextmonth.png</file>
|
||||
<file>qss/lightblue/calendar_prevmonth.png</file>
|
||||
<file>qss/lightblue/checkbox_checked.png</file>
|
||||
<file>qss/lightblue/checkbox_checked_disable.png</file>
|
||||
<file>qss/lightblue/checkbox_parcial.png</file>
|
||||
<file>qss/lightblue/checkbox_parcial_disable.png</file>
|
||||
<file>qss/lightblue/checkbox_unchecked.png</file>
|
||||
<file>qss/lightblue/checkbox_unchecked_disable.png</file>
|
||||
<file>qss/lightblue/menu_checked.png</file>
|
||||
<file>qss/lightblue/radiobutton_checked.png</file>
|
||||
<file>qss/lightblue/radiobutton_checked_disable.png</file>
|
||||
<file>qss/lightblue/radiobutton_unchecked.png</file>
|
||||
<file>qss/lightblue/radiobutton_unchecked_disable.png</file>
|
||||
<file>qss/psblack/add_bottom.png</file>
|
||||
<file>qss/psblack/add_left.png</file>
|
||||
<file>qss/psblack/add_right.png</file>
|
||||
<file>qss/psblack/add_top.png</file>
|
||||
<file>qss/psblack/arrow_bottom.png</file>
|
||||
<file>qss/psblack/arrow_left.png</file>
|
||||
<file>qss/psblack/arrow_right.png</file>
|
||||
<file>qss/psblack/arrow_top.png</file>
|
||||
<file>qss/psblack/branch_close.png</file>
|
||||
<file>qss/psblack/branch_open.png</file>
|
||||
<file>qss/psblack/calendar_nextmonth.png</file>
|
||||
<file>qss/psblack/calendar_prevmonth.png</file>
|
||||
<file>qss/psblack/checkbox_checked.png</file>
|
||||
<file>qss/psblack/checkbox_checked_disable.png</file>
|
||||
<file>qss/psblack/checkbox_parcial.png</file>
|
||||
<file>qss/psblack/checkbox_parcial_disable.png</file>
|
||||
<file>qss/psblack/checkbox_unchecked.png</file>
|
||||
<file>qss/psblack/checkbox_unchecked_disable.png</file>
|
||||
<file>qss/psblack/menu_checked.png</file>
|
||||
<file>qss/psblack/radiobutton_checked.png</file>
|
||||
<file>qss/psblack/radiobutton_checked_disable.png</file>
|
||||
<file>qss/psblack/radiobutton_unchecked.png</file>
|
||||
<file>qss/psblack/radiobutton_unchecked_disable.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
680
ui/styledemo/qrc/qss/flatwhite.css
Normal file
@@ -0,0 +1,680 @@
|
||||
QPalette{background:#FFFFFF;}*{outline:0px;color:#57595B;}
|
||||
|
||||
QWidget[form="true"],QLabel[frameShape="1"]{
|
||||
border:1px solid #B6B6B6;
|
||||
border-radius:0px;
|
||||
}
|
||||
|
||||
QWidget[form="bottom"]{
|
||||
background:#E4E4E4;
|
||||
}
|
||||
|
||||
QWidget[form="bottom"] .QFrame{
|
||||
border:1px solid #57595B;
|
||||
}
|
||||
|
||||
QWidget[form="bottom"] QLabel,QWidget[form="title"] QLabel{
|
||||
border-radius:0px;
|
||||
color:#57595B;
|
||||
background:none;
|
||||
border-style:none;
|
||||
}
|
||||
|
||||
QWidget[form="title"],QWidget[nav="left"],QWidget[nav="top"] QAbstractButton{
|
||||
border-style:none;
|
||||
border-radius:0px;
|
||||
padding:5px;
|
||||
color:#57595B;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #E4E4E4,stop:1 #E4E4E4);
|
||||
}
|
||||
|
||||
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:#575959;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #F6F6F6,stop:1 #F6F6F6);
|
||||
}
|
||||
|
||||
QWidget[nav="left"] QAbstractButton{
|
||||
border-radius:0px;
|
||||
color:#57595B;
|
||||
background:none;
|
||||
border-style:none;
|
||||
}
|
||||
|
||||
QWidget[nav="left"] QAbstractButton:hover{
|
||||
color:#FFFFFF;
|
||||
background-color:#575959;
|
||||
}
|
||||
|
||||
QWidget[nav="left"] QAbstractButton:checked,QWidget[nav="left"] QAbstractButton:pressed{
|
||||
color:#57595B;
|
||||
border-style:solid;
|
||||
border-width:0px 0px 0px 2px;
|
||||
padding:4px 4px 4px 2px;
|
||||
border-color:#575959;
|
||||
background-color:#FFFFFF;
|
||||
}
|
||||
|
||||
QWidget[video="true"] QLabel{
|
||||
color:#57595B;
|
||||
border:1px solid #B6B6B6;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #E4E4E4,stop:1 #E4E4E4);
|
||||
}
|
||||
|
||||
QWidget[video="true"] QLabel:focus{
|
||||
border:1px solid #575959;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #F6F6F6,stop:1 #F6F6F6);
|
||||
}
|
||||
|
||||
QLineEdit:read-only{
|
||||
background-color:#E4E4E4;
|
||||
}
|
||||
|
||||
QLineEdit,QTextEdit,QPlainTextEdit,QSpinBox,QDoubleSpinBox,QComboBox,QDateEdit,QTimeEdit,QDateTimeEdit{
|
||||
border:1px solid #B6B6B6;
|
||||
border-radius:3px;
|
||||
padding:2px;
|
||||
background:none;
|
||||
selection-background-color:#575959;
|
||||
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 #B6B6B6;
|
||||
}
|
||||
|
||||
QLineEdit[echoMode="2"]{
|
||||
lineedit-password-character:9679;
|
||||
}
|
||||
|
||||
.QFrame{
|
||||
border:1px solid #B6B6B6;
|
||||
border-radius:3px;
|
||||
}
|
||||
|
||||
.QGroupBox{
|
||||
border:1px solid #B6B6B6;
|
||||
border-radius:5px;
|
||||
margin-top:3ex;
|
||||
}
|
||||
|
||||
.QGroupBox::title{
|
||||
subcontrol-origin:margin;
|
||||
position:relative;
|
||||
left:10px;
|
||||
}
|
||||
|
||||
.QPushButton,.QToolButton{
|
||||
border-style:none;
|
||||
border:1px solid #B6B6B6;
|
||||
color:#57595B;
|
||||
padding:5px;
|
||||
min-height:15px;
|
||||
border-radius:5px;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #E4E4E4,stop:1 #E4E4E4);
|
||||
}
|
||||
|
||||
.QPushButton:hover,.QToolButton:hover{
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #F6F6F6,stop:1 #F6F6F6);
|
||||
}
|
||||
|
||||
.QPushButton:pressed,.QToolButton:pressed{
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #E4E4E4,stop:1 #E4E4E4);
|
||||
}
|
||||
|
||||
.QToolButton::menu-indicator{
|
||||
image:None;
|
||||
}
|
||||
|
||||
QToolButton#btnMenu,QPushButton#btnMenu_Min,QPushButton#btnMenu_Max,QPushButton#btnMenu_Close{
|
||||
border-radius:3px;
|
||||
color:#57595B;
|
||||
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/flatwhite/radiobutton_unchecked.png);
|
||||
}
|
||||
|
||||
QRadioButton::indicator::unchecked:disabled{
|
||||
image:url(:/qss/flatwhite/radiobutton_unchecked_disable.png);
|
||||
}
|
||||
|
||||
QRadioButton::indicator::checked{
|
||||
image:url(:/qss/flatwhite/radiobutton_checked.png);
|
||||
}
|
||||
|
||||
QRadioButton::indicator::checked:disabled{
|
||||
image:url(:/qss/flatwhite/radiobutton_checked_disable.png);
|
||||
}
|
||||
|
||||
QGroupBox::indicator,QTreeWidget::indicator,QListWidget::indicator{
|
||||
padding:0px -3px 0px 0px;
|
||||
}
|
||||
|
||||
QCheckBox::indicator,QGroupBox::indicator,QTreeWidget::indicator,QListWidget::indicator{
|
||||
width:13px;
|
||||
height:13px;
|
||||
}
|
||||
|
||||
QCheckBox::indicator:unchecked,QGroupBox::indicator:unchecked,QTreeWidget::indicator:unchecked,QListWidget::indicator:unchecked{
|
||||
image:url(:/qss/flatwhite/checkbox_unchecked.png);
|
||||
}
|
||||
|
||||
QCheckBox::indicator:unchecked:disabled,QGroupBox::indicator:unchecked:disabled,QTreeWidget::indicator:unchecked:disabled,QListWidget::indicator:disabled{
|
||||
image:url(:/qss/flatwhite/checkbox_unchecked_disable.png);
|
||||
}
|
||||
|
||||
QCheckBox::indicator:checked,QGroupBox::indicator:checked,QTreeWidget::indicator:checked,QListWidget::indicator:checked{
|
||||
image:url(:/qss/flatwhite/checkbox_checked.png);
|
||||
}
|
||||
|
||||
QCheckBox::indicator:checked:disabled,QGroupBox::indicator:checked:disabled,QTreeWidget::indicator:checked:disabled,QListWidget::indicator:checked:disabled{
|
||||
image:url(:/qss/flatwhite/checkbox_checked_disable.png);
|
||||
}
|
||||
|
||||
QCheckBox::indicator:indeterminate,QGroupBox::indicator:indeterminate,QTreeWidget::indicator:indeterminate,QListWidget::indicator:indeterminate{
|
||||
image:url(:/qss/flatwhite/checkbox_parcial.png);
|
||||
}
|
||||
|
||||
QCheckBox::indicator:indeterminate:disabled,QGroupBox::indicator:indeterminate:disabled,QTreeWidget::indicator:indeterminate:disabled,QListWidget::indicator:indeterminate:disabled{
|
||||
image:url(:/qss/flatwhite/checkbox_parcial_disable.png);
|
||||
}
|
||||
|
||||
QTimeEdit::up-button,QDateEdit::up-button,QDateTimeEdit::up-button,QDoubleSpinBox::up-button,QSpinBox::up-button{
|
||||
image:url(:/qss/flatwhite/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/flatwhite/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/flatwhite/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:#B6B6B6;
|
||||
}
|
||||
|
||||
QComboBox::drop-down:on{
|
||||
top:1px;
|
||||
}
|
||||
|
||||
QMenuBar::item{
|
||||
color:#57595B;
|
||||
background-color:#E4E4E4;
|
||||
margin:0px;
|
||||
padding:3px 10px;
|
||||
}
|
||||
|
||||
QMenu,QMenuBar,QMenu:disabled,QMenuBar:disabled{
|
||||
color:#57595B;
|
||||
background-color:#E4E4E4;
|
||||
border:1px solid #B6B6B6;
|
||||
margin:0px;
|
||||
}
|
||||
|
||||
QMenu::item{
|
||||
padding:3px 20px;
|
||||
}
|
||||
|
||||
QMenu::indicator{
|
||||
width:20px;
|
||||
height:13px;
|
||||
}
|
||||
|
||||
QMenu::indicator::checked{
|
||||
image:url(:/qss/flatwhite/menu_checked.png);
|
||||
}
|
||||
|
||||
QMenu::right-arrow{
|
||||
image:url(:/qss/flatwhite/arrow_right.png);
|
||||
width:13px;
|
||||
height:13px;
|
||||
padding:0px 3px 0px 0px;
|
||||
}
|
||||
|
||||
QMenu::item:selected,QMenuBar::item:selected{
|
||||
color:#57595B;
|
||||
border:0px solid #B6B6B6;
|
||||
background:#F6F6F6;
|
||||
}
|
||||
|
||||
QMenu::separator{
|
||||
height:1px;
|
||||
background:#B6B6B6;
|
||||
}
|
||||
|
||||
QProgressBar{
|
||||
min-height:10px;
|
||||
background:#E4E4E4;
|
||||
border-radius:5px;
|
||||
text-align:center;
|
||||
border:1px solid #E4E4E4;
|
||||
}
|
||||
|
||||
QProgressBar:chunk{
|
||||
border-radius:5px;
|
||||
background-color:#B6B6B6;
|
||||
}
|
||||
|
||||
QSlider::groove:horizontal{
|
||||
background:#E4E4E4;
|
||||
height:8px;
|
||||
border-radius:4px;
|
||||
}
|
||||
|
||||
QSlider::add-page:horizontal{
|
||||
background:#E4E4E4;
|
||||
height:8px;
|
||||
border-radius:4px;
|
||||
}
|
||||
|
||||
QSlider::sub-page:horizontal{
|
||||
background:#B6B6B6;
|
||||
height:8px;
|
||||
border-radius:4px;
|
||||
}
|
||||
|
||||
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 #FFFFFF,stop:0.8 #B6B6B6);
|
||||
}
|
||||
|
||||
QSlider::groove:vertical{
|
||||
width:8px;
|
||||
border-radius:4px;
|
||||
background:#E4E4E4;
|
||||
}
|
||||
|
||||
QSlider::add-page:vertical{
|
||||
width:8px;
|
||||
border-radius:4px;
|
||||
background:#E4E4E4;
|
||||
}
|
||||
|
||||
QSlider::sub-page:vertical{
|
||||
width:8px;
|
||||
border-radius:4px;
|
||||
background:#B6B6B6;
|
||||
}
|
||||
|
||||
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 #FFFFFF,stop:0.8 #B6B6B6);
|
||||
}
|
||||
|
||||
QScrollBar:horizontal{
|
||||
background:#E4E4E4;
|
||||
padding:0px;
|
||||
border-radius:6px;
|
||||
max-height:12px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:horizontal{
|
||||
background:#B6B6B6;
|
||||
min-width:50px;
|
||||
border-radius:6px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:horizontal:hover{
|
||||
background:#575959;
|
||||
}
|
||||
|
||||
QScrollBar::handle:horizontal:pressed{
|
||||
background:#575959;
|
||||
}
|
||||
|
||||
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:#E4E4E4;
|
||||
padding:0px;
|
||||
border-radius:6px;
|
||||
max-width:12px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical{
|
||||
background:#B6B6B6;
|
||||
min-height:50px;
|
||||
border-radius:6px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical:hover{
|
||||
background:#575959;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical:pressed{
|
||||
background:#575959;
|
||||
}
|
||||
|
||||
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 #B6B6B6;
|
||||
selection-background-color:#F6F6F6;
|
||||
selection-color:#57595B;
|
||||
alternate-background-color:#F6F6F6;
|
||||
gridline-color:#B6B6B6;
|
||||
}
|
||||
|
||||
QTreeView::branch:closed:has-children{
|
||||
margin:4px;
|
||||
border-image:url(:/qss/flatwhite/branch_open.png);
|
||||
}
|
||||
|
||||
QTreeView::branch:open:has-children{
|
||||
margin:4px;
|
||||
border-image:url(:/qss/flatwhite/branch_close.png);
|
||||
}
|
||||
|
||||
QTreeView,QListView,QTableView,QSplitter::handle,QTreeView::branch{
|
||||
background:#FFFFFF;
|
||||
}
|
||||
|
||||
QTableView::item:selected,QListView::item:selected,QTreeView::item:selected{
|
||||
color:#57595B;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #E4E4E4,stop:1 #E4E4E4);
|
||||
}
|
||||
|
||||
QTableView::item:hover,QListView::item:hover,QTreeView::item:hover,QHeaderView{
|
||||
color:#57595B;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #F6F6F6,stop:1 #F6F6F6);
|
||||
}
|
||||
|
||||
QTableView::item,QListView::item,QTreeView::item{
|
||||
padding:1px;
|
||||
margin:0px;
|
||||
}
|
||||
|
||||
QHeaderView::section,QTableCornerButton:section{
|
||||
padding:3px;
|
||||
margin:0px;
|
||||
color:#57595B;
|
||||
border:1px solid #B6B6B6;
|
||||
border-left-width:0px;
|
||||
border-right-width:1px;
|
||||
border-top-width:0px;
|
||||
border-bottom-width:1px;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #F6F6F6,stop:1 #F6F6F6);
|
||||
}
|
||||
|
||||
QTabBar::tab{
|
||||
border:1px solid #B6B6B6;
|
||||
color:#57595B;
|
||||
margin:0px;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #F6F6F6,stop:1 #F6F6F6);
|
||||
}
|
||||
|
||||
QTabBar::tab:selected,QTabBar::tab:hover{
|
||||
border-style:solid;
|
||||
border-color:#575959;
|
||||
background:#FFFFFF;
|
||||
}
|
||||
|
||||
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,QTabBar::tab:top:hover{
|
||||
border-width:2px 0px 0px 0px;
|
||||
}
|
||||
|
||||
QTabBar::tab:right:selected,QTabBar::tab:right:hover{
|
||||
border-width:0px 0px 0px 2px;
|
||||
}
|
||||
|
||||
QTabBar::tab:bottom:selected,QTabBar::tab:bottom:hover{
|
||||
border-width:0px 0px 2px 0px;
|
||||
}
|
||||
|
||||
QTabBar::tab:left:selected,QTabBar::tab:left:hover{
|
||||
border-width:0px 2px 0px 0px;
|
||||
}
|
||||
|
||||
QTabBar::tab:first:top:selected,QTabBar::tab:first:top:hover,QTabBar::tab:first:bottom:selected,QTabBar::tab:first:bottom:hover{
|
||||
border-left-width:1px;
|
||||
border-left-color:#B6B6B6;
|
||||
}
|
||||
|
||||
QTabBar::tab:first:left:selected,QTabBar::tab:first:left:hover,QTabBar::tab:first:right:selected,QTabBar::tab:first:right:hover{
|
||||
border-top-width:1px;
|
||||
border-top-color:#B6B6B6;
|
||||
}
|
||||
|
||||
QTabBar::tab:last:top:selected,QTabBar::tab:last:top:hover,QTabBar::tab:last:bottom:selected,QTabBar::tab:last:bottom:hover{
|
||||
border-right-width:1px;
|
||||
border-right-color:#B6B6B6;
|
||||
}
|
||||
|
||||
QTabBar::tab:last:left:selected,QTabBar::tab:last:left:hover,QTabBar::tab:last:right:selected,QTabBar::tab:last:right:hover{
|
||||
border-bottom-width:1px;
|
||||
border-bottom-color:#B6B6B6;
|
||||
}
|
||||
|
||||
QStatusBar::item{
|
||||
border:0px solid #E4E4E4;
|
||||
border-radius:3px;
|
||||
}
|
||||
|
||||
QToolBox::tab,QGroupBox#gboxDevicePanel,QGroupBox#gboxDeviceTitle,QFrame#gboxDevicePanel,QFrame#gboxDeviceTitle{
|
||||
padding:3px;
|
||||
border-radius:5px;
|
||||
color:#57595B;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #E4E4E4,stop:1 #E4E4E4);
|
||||
}
|
||||
|
||||
QToolTip{
|
||||
border:0px solid #57595B;
|
||||
padding:1px;
|
||||
color:#57595B;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #E4E4E4,stop:1 #E4E4E4);
|
||||
}
|
||||
|
||||
QToolBox::tab:selected{
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #F6F6F6,stop:1 #F6F6F6);
|
||||
}
|
||||
|
||||
QPrintPreviewDialog QToolButton{
|
||||
border:0px solid #57595B;
|
||||
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/flatwhite/calendar_prevmonth.png);
|
||||
}
|
||||
|
||||
QToolButton#qt_calendar_nextmonth{
|
||||
icon-size:0px;
|
||||
min-width:20px;
|
||||
image:url(:/qss/flatwhite/calendar_nextmonth.png);
|
||||
}
|
||||
|
||||
QToolButton#qt_calendar_prevmonth,QToolButton#qt_calendar_nextmonth,QToolButton#qt_calendar_monthbutton,QToolButton#qt_calendar_yearbutton{
|
||||
border:0px solid #57595B;
|
||||
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 #B6B6B6;
|
||||
}
|
||||
|
||||
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 #B6B6B6;
|
||||
border-width:1px 1px 0px 1px;
|
||||
background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #E4E4E4,stop:1 #E4E4E4);
|
||||
}
|
||||
|
||||
QComboBox QAbstractItemView::item{
|
||||
min-height:20px;
|
||||
min-width:10px;
|
||||
}
|
||||
|
||||
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:#FFFFFF;
|
||||
}
|
||||
|
||||
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:#FFFFFF;
|
||||
color:#57595B;
|
||||
}
|
||||
|
||||
QDialogButtonBox>QPushButton{
|
||||
min-width:50px;
|
||||
}
|
||||
|
||||
QListView[noboder="true"],QTreeView[noboder="true"],QTabWidget[noboder="true"]::pane{
|
||||
border-width:0px;
|
||||
}
|
||||
|
||||
QToolBar>*,QStatusBar>*{
|
||||
margin:2px;
|
||||
}
|
||||
|
||||
*:disabled,QMenu::item:disabled,QTabBar:tab:disabled,QHeaderView::section:disabled{
|
||||
background:#FFFFFF;
|
||||
border-color:#E4E4E4;
|
||||
color:#B6B6B6;
|
||||
}
|
||||
|
||||
/*TextColor:#57595B*/
|
||||
/*PanelColor:#FFFFFF*/
|
||||
/*BorderColor:#B6B6B6*/
|
||||
/*NormalColorStart:#E4E4E4*/
|
||||
/*NormalColorEnd:#E4E4E4*/
|
||||
/*DarkColorStart:#F6F6F6*/
|
||||
/*DarkColorEnd:#F6F6F6*/
|
||||
/*HighColor:#575959*/
|
||||
BIN
ui/styledemo/qrc/qss/flatwhite/add_bottom.png
Normal file
|
After Width: | Height: | Size: 336 B |
BIN
ui/styledemo/qrc/qss/flatwhite/add_left.png
Normal file
|
After Width: | Height: | Size: 370 B |
BIN
ui/styledemo/qrc/qss/flatwhite/add_right.png
Normal file
|
After Width: | Height: | Size: 358 B |
BIN
ui/styledemo/qrc/qss/flatwhite/add_top.png
Normal file
|
After Width: | Height: | Size: 332 B |
BIN
ui/styledemo/qrc/qss/flatwhite/arrow_bottom.png
Normal file
|
After Width: | Height: | Size: 337 B |
BIN
ui/styledemo/qrc/qss/flatwhite/arrow_left.png
Normal file
|
After Width: | Height: | Size: 376 B |
BIN
ui/styledemo/qrc/qss/flatwhite/arrow_right.png
Normal file
|
After Width: | Height: | Size: 360 B |
BIN
ui/styledemo/qrc/qss/flatwhite/arrow_top.png
Normal file
|
After Width: | Height: | Size: 361 B |
BIN
ui/styledemo/qrc/qss/flatwhite/branch_close.png
Normal file
|
After Width: | Height: | Size: 263 B |
BIN
ui/styledemo/qrc/qss/flatwhite/branch_open.png
Normal file
|
After Width: | Height: | Size: 444 B |
BIN
ui/styledemo/qrc/qss/flatwhite/calendar_nextmonth.png
Normal file
|
After Width: | Height: | Size: 655 B |
BIN
ui/styledemo/qrc/qss/flatwhite/calendar_prevmonth.png
Normal file
|
After Width: | Height: | Size: 740 B |
BIN
ui/styledemo/qrc/qss/flatwhite/checkbox_checked.png
Normal file
|
After Width: | Height: | Size: 616 B |
BIN
ui/styledemo/qrc/qss/flatwhite/checkbox_checked_disable.png
Normal file
|
After Width: | Height: | Size: 639 B |
BIN
ui/styledemo/qrc/qss/flatwhite/checkbox_parcial.png
Normal file
|
After Width: | Height: | Size: 341 B |
BIN
ui/styledemo/qrc/qss/flatwhite/checkbox_parcial_disable.png
Normal file
|
After Width: | Height: | Size: 331 B |
BIN
ui/styledemo/qrc/qss/flatwhite/checkbox_unchecked.png
Normal file
|
After Width: | Height: | Size: 612 B |
BIN
ui/styledemo/qrc/qss/flatwhite/checkbox_unchecked_disable.png
Normal file
|
After Width: | Height: | Size: 646 B |
BIN
ui/styledemo/qrc/qss/flatwhite/menu_checked.png
Normal file
|
After Width: | Height: | Size: 542 B |
BIN
ui/styledemo/qrc/qss/flatwhite/radiobutton_checked.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |