kiran-flameshot/0001-Optimize-toolbar-add-toolbar-function-optimize-line--9c2875ef.patch

2031 lines
68 KiB
Diff
Raw Normal View History

2021-01-15 09:58:11 +08:00
From 9c2875ef5d315cc8937dce3c28b585c370101c2f Mon Sep 17 00:00:00 2001
From: pengyulong <pengyulong@kylinos.com.cn>
Date: Fri, 11 Dec 2020 15:27:10 +0800
Subject: [PATCH] Optimize toolbar, add toolbar function, optimize line size
and color selection.
---
flameshot.pro | 10 +-
flameshot.pro.user | 2 +-
menucontroller.cpp | 3 +-
src/config/buttonlistview.cpp | 2 +-
src/imgur.pri | 4 +-
src/utils/confighandler.cpp | 20 +-
src/utils/filenamehandler.cpp | 6 +-
src/utils/screenshotsaver.cpp | 1 +
src/widgets/capture/capturebutton.cpp | 41 +-
src/widgets/capture/capturebutton.h | 1 +
src/widgets/capture/capturewidget.cpp | 114 ++++--
src/widgets/capture/capturewidget.h | 7 +-
src/widgets/capture/colorpicker.cpp | 517 ++++--------------------
src/widgets/capture/colorpicker.h | 27 +-
src/widgets/capture/fontwidget.h | 38 ++
src/widgets/capture/formtip.cpp | 47 +++
src/widgets/capture/formtip.h | 23 ++
src/widgets/capture/thicknesswidget.cpp | 120 ++++++
src/widgets/capture/thicknesswidget.h | 46 +++
src/widgets/capture/toowidget.cpp | 139 +++++++
src/widgets/capture/toowidget.h | 55 +++
src/widgets/infowindow.cpp | 2 +-
textbutton.h | 13 +-
textbutton.qss | 151 +++++--
zoomIndicator.cpp | 6 +-
25 files changed, 838 insertions(+), 557 deletions(-)
create mode 100644 src/widgets/capture/fontwidget.h
create mode 100644 src/widgets/capture/formtip.cpp
create mode 100644 src/widgets/capture/formtip.h
create mode 100644 src/widgets/capture/thicknesswidget.cpp
create mode 100644 src/widgets/capture/thicknesswidget.h
create mode 100644 src/widgets/capture/toowidget.cpp
create mode 100644 src/widgets/capture/toowidget.h
diff --git a/flameshot.pro b/flameshot.pro
index 7357646..b2ff378 100755
--- a/flameshot.pro
+++ b/flameshot.pro
@@ -180,7 +180,10 @@ SOURCES += src/main.cpp \
configsettings.cpp \
savetips.cpp \
src/tools/saveoption.cpp \
- src/utils/win_manager.cpp
+ src/utils/win_manager.cpp \
+ src/widgets/capture/toowidget.cpp \
+ src/widgets/capture/thicknesswidget.cpp \
+ src/widgets/capture/formtip.cpp
HEADERS += src/widgets/capture/buttonhandler.h \
src/widgets/infowindow.h \
@@ -266,7 +269,10 @@ HEADERS += src/widgets/capture/buttonhandler.h \
textbutton.h \
src/tools/saveoption.h \
src/tools/toolbutton.h \
- src/utils/win_manager.h
+ src/utils/win_manager.h \
+ src/widgets/capture/toowidget.h \
+ src/widgets/capture/thicknesswidget.h \
+ src/widgets/capture/formtip.h
unix:!macx {
SOURCES += src/core/flameshotdbusadapter.cpp \
diff --git a/flameshot.pro.user b/flameshot.pro.user
index e18b565..24440cd 100755
--- a/flameshot.pro.user
+++ b/flameshot.pro.user
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.3.1, 2020-10-31T11:59:06. -->
+<!-- Written by QtCreator 4.3.1, 2020-12-11T11:47:31. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
diff --git a/menucontroller.cpp b/menucontroller.cpp
index 1589f49..3b4c350 100755
--- a/menucontroller.cpp
+++ b/menucontroller.cpp
@@ -39,7 +39,8 @@ MenuController::MenuController(QObject *parent)
"border-radius: 20px; "
"}"
"QMenu::item { background-color: transparent;"
- "padding:3px 20px;"
+ "border-radius: 20px; "
+ "padding:3px 20px 3px 24px;"
"margin:5px 10px;"
"}"
"QMenu::item:selected { background-color: gray; }";
diff --git a/src/config/buttonlistview.cpp b/src/config/buttonlistview.cpp
index 34eda4b..1d9c47c 100755
--- a/src/config/buttonlistview.cpp
+++ b/src/config/buttonlistview.cpp
@@ -91,7 +91,7 @@ void ButtonListView::reverseItemCheck(QListWidgetItem *item){
void ButtonListView::selectAll() {
ConfigHandler().setAllTheButtons();
for(int i = 0; i < this->count(); ++i) {
- if(i>=9&&i<=17)
+ if((i>=9&&i<=10)||i>15)
continue;
QListWidgetItem* item = this->item(i);
item->setCheckState(Qt::Checked);
diff --git a/src/imgur.pri b/src/imgur.pri
index 0881715..3fc8189 100755
--- a/src/imgur.pri
+++ b/src/imgur.pri
@@ -11,8 +11,8 @@ HEADERS += \
$$PWD/tools/colorbutton.h \
$$PWD/tools/rectbutton.h \
$$PWD/tools/linebutton.h \
- $$PWD/utils/win_manager.h
+ $$PWD/utils/win_manager.h \
SOURCES += \
$$PWD/tools/colorbutton.cpp \
- $$PWD/utils/win_manager.cpp
+ $$PWD/utils/win_manager.cpp \
diff --git a/src/utils/confighandler.cpp b/src/utils/confighandler.cpp
index 6abe8e7..a64dcef 100755
--- a/src/utils/confighandler.cpp
+++ b/src/utils/confighandler.cpp
@@ -52,10 +52,10 @@ QVector<CaptureButton::ButtonType> ConfigHandler::getButtons() {
//<< CaptureButton::TYPE_SELECTIONINDICATOR
//<< CaptureButton::TYPE_MOVESELECTION
//<< CaptureButton::TYPE_UNDO
-// << CaptureButton::TYPE_REDO
+ << CaptureButton::TYPE_REDO
// << CaptureButton::TYPE_COPY
<< CaptureButton::TYPE_SAVE
-// << CaptureButton::TYPE_EXIT
+ << CaptureButton::TYPE_EXIT
// << CaptureButton::TYPE_IMAGEUPLOADER
// << CaptureButton::TYPE_OPEN_APP
// << CaptureButton::TYPE_PIN
@@ -81,15 +81,15 @@ void ConfigHandler::setButtons(const QVector<CaptureButton::ButtonType> &buttons
QVector<QColor> ConfigHandler::getUserColors() {
QVector<QColor> colors;
const QVector<QColor> &defaultColors = {
- Qt::darkRed,
Qt::red,
- Qt::yellow,
- Qt::green,
- Qt::darkGreen,
- Qt::cyan,
- Qt::blue,
- Qt::magenta,
- Qt::darkMagenta
+ QColor(250,204,0),
+ //Qt::cyan,
+ QColor(0,255,255),
+ //Qt::blue,
+ Qt::black,
+ Qt::white
+ //Qt::magenta,
+ //Qt::darkMagenta
};
if (m_settings.contains(QStringLiteral("userColors"))) {
diff --git a/src/utils/filenamehandler.cpp b/src/utils/filenamehandler.cpp
index 9c65579..cd1e0f7 100755
--- a/src/utils/filenamehandler.cpp
+++ b/src/utils/filenamehandler.cpp
@@ -21,6 +21,8 @@
#include <locale>
#include <QStandardPaths>
#include <QDir>
+#include <QTime>
+#include <QDebug>
FileNameHandler::FileNameHandler(QObject *parent) : QObject(parent) {
std::locale::global(std::locale(""));
@@ -41,7 +43,9 @@ QString FileNameHandler::parseFilename(const QString &name) {
char data[MAX_CHARACTERS] = {0};
std::strftime(data, sizeof(data),
tempData, std::localtime(&t));
- res = QString::fromLocal8Bit(data, (int)strlen(data));
+ res = QDateTime::currentDateTime().toString("yyyy-MM-dd-hh:mm:ss:zzz");
+
+ //res = QString::fromLocal8Bit(data, (int)strlen(data));
free(tempData);
// add the parsed pattern in a correct format for the filesystem
diff --git a/src/utils/screenshotsaver.cpp b/src/utils/screenshotsaver.cpp
index ab05a4f..36925d7 100755
--- a/src/utils/screenshotsaver.cpp
+++ b/src/utils/screenshotsaver.cpp
@@ -24,6 +24,7 @@
#include <QMessageBox>
#include <QFileDialog>
#include <QImageWriter>
+#include <QDebug>
ScreenshotSaver::ScreenshotSaver() {
}
diff --git a/src/widgets/capture/capturebutton.cpp b/src/widgets/capture/capturebutton.cpp
index e5b6858..87cf0b0 100755
--- a/src/widgets/capture/capturebutton.cpp
+++ b/src/widgets/capture/capturebutton.cpp
@@ -30,6 +30,7 @@
#include <QGraphicsDropShadowEffect>
#include <QApplication>
#include <QMenu>
+#include <QDebug>
// Button represents a single button of the capture widget, it can enable
// multiple functionality.
@@ -43,7 +44,7 @@ CaptureButton::CaptureButton(const ButtonType t, QWidget *parent) : QPushButton(
setFont(QFont(f.family(), 7, QFont::Bold));
} else if (t == TYPE_SAVEOPTION) {
this->setText("选项");
- this->setFixedSize(50,30);
+ this->setFixedSize(60,30);
QFont f("NotoSansCJKSC-Regular");
this->setFont(f);
@@ -184,15 +185,16 @@ static std::map<CaptureButton::ButtonType, int> buttonTypeOrder {
{ CaptureButton::TYPE_BLUR, 8 },
//{ CaptureButton::TYPE_SELECTIONINDICATOR, 9 },
//{ CaptureButton::TYPE_MOVESELECTION, 10 },
- //{ CaptureButton::TYPE_UNDO, 11 },
- //{ CaptureButton::TYPE_REDO, 12 },
+ { CaptureButton::TYPE_UNDO, 11 },
+ { CaptureButton::TYPE_REDO, 12 },
// { CaptureButton::TYPE_COPY, 13 },
- { CaptureButton::TYPE_SAVE, 13 },
- /* { CaptureButton::TYPE_EXIT, 15 },
- { CaptureButton::TYPE_IMAGEUPLOADER, 16 },
- { CaptureButton::TYPE_OPEN_APP, 17 },
- { CaptureButton::TYPE_PIN, 18 },*/
- { CaptureButton::TYPE_SAVEOPTION, 19 },
+ { CaptureButton::TYPE_SAVEOPTION, 13 },
+ { CaptureButton::TYPE_EXIT, 14 },
+ { CaptureButton::TYPE_SAVE, 15 },
+// { CaptureButton::TYPE_IMAGEUPLOADER, 16 },
+// { CaptureButton::TYPE_OPEN_APP, 17 },
+// { CaptureButton::TYPE_PIN, 18 },
+
};
int CaptureButton::getPriorityByButton(CaptureButton::ButtonType b) {
@@ -212,13 +214,20 @@ QVector<CaptureButton::ButtonType> CaptureButton::iterableButtonTypes = {
CaptureButton::TYPE_BLUR,
//CaptureButton::TYPE_SELECTIONINDICATOR,
//CaptureButton::TYPE_MOVESELECTION,
- //CaptureButton::TYPE_UNDO,
- //CaptureButton::TYPE_REDO,
+ CaptureButton::TYPE_UNDO,
+ CaptureButton::TYPE_REDO,
//CaptureButton::TYPE_COPY,
- CaptureButton::TYPE_SAVE,
- /* CaptureButton::TYPE_EXIT,
- CaptureButton::TYPE_IMAGEUPLOADER,
- CaptureButton::TYPE_OPEN_APP,
- CaptureButton::TYPE_PIN,*/
CaptureButton::TYPE_SAVEOPTION,
+ CaptureButton::TYPE_EXIT,
+ CaptureButton::TYPE_SAVE,
+// CaptureButton::TYPE_IMAGEUPLOADER,
+// CaptureButton::TYPE_OPEN_APP,
+// CaptureButton::TYPE_PIN,s
};
+
+void CaptureButton::getRect()
+{
+
+qDebug() << this->geometry().x();
+qDebug() << this->geometry().y();
+}
diff --git a/src/widgets/capture/capturebutton.h b/src/widgets/capture/capturebutton.h
index cd4c57c..230bfe9 100755
--- a/src/widgets/capture/capturebutton.h
+++ b/src/widgets/capture/capturebutton.h
@@ -76,6 +76,7 @@ public:
void setColor(const QColor &c);
void animatedShow();
+ void getRect();
protected:
virtual void mousePressEvent(QMouseEvent *);
diff --git a/src/widgets/capture/capturewidget.cpp b/src/widgets/capture/capturewidget.cpp
index 52f4ede..fb6d51a 100755
--- a/src/widgets/capture/capturewidget.cpp
+++ b/src/widgets/capture/capturewidget.cpp
@@ -57,7 +57,6 @@
#include <X11/Xlib.h>
-
namespace {
const int RECORD_MIN_SIZE = 10;
const int SPACING = 10;
@@ -66,6 +65,8 @@ const int CURSOR_WIDTH = 8;
const int CURSOR_HEIGHT = 18;
const int INDICATOR_WIDTH = 99;
const qreal RESIZEPOINT_WIDTH = 15;
+const int BAR_WIDTH = 530;
+const int BAR_HEIGHT = 30;
}
// CaptureWidget is the main component used to capture the screen. It contains an
@@ -91,12 +92,12 @@ CaptureWidget::CaptureWidget(const uint id, const QString &savePath,
m_opacity = m_config.contrastOpacityValue();
m_bar = new QWidget(this);
- m_bar->resize(420,30);
+ m_bar->resize(BAR_WIDTH,BAR_HEIGHT);
m_bar->setMouseTracking(true);
m_bar->setStyleSheet("QWidget{border-radius:4px;padding:2px 4px;background-color:white;}");
+ m_bar->move(-500,-500);
m_bar->hide();
-
setMouseTracking(true);
initContext(savePath, fullScreen);
initShortcuts();
@@ -165,16 +166,21 @@ CaptureWidget::CaptureWidget(const uint id, const QString &savePath,
initOriginUI();
initSecondUI();
+ m_formtip = new FormTip(this);
+ makeChild(m_formtip);
+ m_formtip->move(-500,-500);
+ m_formtip->hide();
+
// Init color picker
m_colorPicker = new ColorPicker(m_context.thickness,m_context.color,this);
connect(m_colorPicker, &ColorPicker::colorSelected,
this, &CaptureWidget::setDrawColor);
connect(m_colorPicker, &ColorPicker::thicknessSelected,
this, &CaptureWidget::setDrawThickness);
- connect(m_colorPicker, &ColorPicker::styleSelected,
- this, &CaptureWidget::setDrawRectStyle);
- connect(m_colorPicker, &ColorPicker::lineSelected,
- this, &CaptureWidget::setDrawLineStyle);
+// connect(m_colorPicker, &ColorPicker::styleSelected,
+// this, &CaptureWidget::setDrawRectStyle);
+// connect(m_colorPicker, &ColorPicker::lineSelected,
+// this, &CaptureWidget::setDrawLineStyle);
connect(this,&CaptureWidget::thicknessCh,
m_colorPicker, &ColorPicker::thicknessChanged);
/*QLabel* m_hSeparatorLine = new QLabel(this);
@@ -187,6 +193,7 @@ CaptureWidget::CaptureWidget(const uint id, const QString &savePath,
vLayout->addWidget(m_colorPicker, 0, Qt::AlignVCenter);
setLayout(vLayout);*/
makeChild(m_colorPicker);
+ m_colorPicker->move(-500,-500);
m_colorPicker->hide();
// Init notification widget
@@ -266,7 +273,7 @@ void CaptureWidget::initOriginUI()
void CaptureWidget::initSecondUI()
{
//m_menuController = new MenuController(this);
-
+ return;
/*m_toolBar = new ToolBar(this);
m_toolBar->hide();*/
}
@@ -317,6 +324,14 @@ void CaptureWidget::updateButtons() {
}
else if(t == CaptureButton::TYPE_SAVEOPTION)
{
+
+ QLabel* SeparatorLine = new QLabel();
+ SeparatorLine->setFixedSize(1, 20);
+ SeparatorLine->setStyleSheet("QLabel{border: 1px solid rgb(199,199,199);}");
+
+ rectLayout->addSpacing(9);
+ rectLayout->addWidget(SeparatorLine);
+
m_menuController = new MenuController(this);
QMenu* m_menu = m_menuController->getMenu();
@@ -350,6 +365,7 @@ void CaptureWidget::updateButtons() {
m_bar->setLayout(rectLayout);
m_bar->hide();
+ makeChild(m_bar);
m_buttonHandler->setButtons(vectorButtons);
@@ -379,6 +395,11 @@ void CaptureWidget::deleteToolwidgetOrClose() {
void CaptureWidget::paintEvent(QPaintEvent *) {
QPainter painter(this);
painter.drawPixmap(0, 0, m_context.screenshot);
+ if(m_flag)
+ {
+ //painter.fillPath(path,QBrush(Qt::black));
+ m_flag = false;
+ }
if (m_activeTool && m_mouseIsClicked) {
painter.save();
m_activeTool->process(painter, m_context.screenshot);
@@ -455,6 +476,11 @@ void CaptureWidget::mousePressEvent(QMouseEvent *e) {
m_isFirstReleaseButton = true;
}
+ if(m_selection->geometry().contains(this->mapFromGlobal(QCursor::pos())))
+ m_inselection = true;
+ else
+ m_inselection = false;
+
if (e->button() == Qt::RightButton) {
m_rightClick = true;
/*if(m_selection->x() + m_selection->width() > m_context.desktop->screenGeometry().width() - 60)
@@ -469,7 +495,7 @@ void CaptureWidget::mousePressEvent(QMouseEvent *e) {
m_showInitialMsg = false;
m_mouseIsClicked = true;
// Click using a tool
- if (m_activeButton) {
+ if (m_activeButton && m_inselection) {
if (m_activeTool) {
if (m_activeTool->isValid() && m_toolWidget) {
pushToolToStack();
@@ -491,13 +517,16 @@ void CaptureWidget::mousePressEvent(QMouseEvent *e) {
m_activeTool, &CaptureTool::thicknessChanged);
connect(m_activeTool, &CaptureTool::requestAction,
this, &CaptureWidget::handleButtonSignal);
+
m_activeTool->drawStart(m_context);
return;
}
+ else if(m_activeButton)
+ return;
+
if(m_bar->geometry().contains(this->mapFromGlobal(QCursor::pos())))
return ;
-
m_dragStartPoint = e->pos();
m_selection->saveGeometry();
// New selection
@@ -658,7 +687,7 @@ void CaptureWidget::mouseMoveEvent(QMouseEvent *e) {
m_selection->setGeometry(r.intersected(rect()).normalized());
update();
}
- } else if (m_mouseIsClicked && m_activeTool) {
+ } else if (m_mouseIsClicked && m_activeTool && m_inselection) {
if(e->pos().x() < m_selection->x() && e->pos().y() < m_selection->y()){
if (m_adjustmentButtonPressed) {
@@ -757,6 +786,7 @@ void CaptureWidget::mouseMoveEvent(QMouseEvent *e) {
void CaptureWidget::mouseReleaseEvent(QMouseEvent *e) {
if (e->button() == Qt::RightButton) {
m_colorPicker->hide();
+ m_formtip->hide();
m_rightClick = false;
// when we end the drawing we have to register the last point and
//add the temp modification to the list of modifications
@@ -792,29 +822,29 @@ void CaptureWidget::mouseReleaseEvent(QMouseEvent *e) {
m_context.selection = extendedRect(&newGeometry);
updateSizeIndicator();
- if((m_selection->x() + m_selection->width()/2 <= 200 )&& (m_selection->width() <= 400))
+ if((m_selection->x() + m_selection->width()/2 <= 220 )&& (m_selection->width() <= 440))
{
- if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100 )&& (m_selection->height() <= 200))
+ if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100 )&& (m_selection->height() <= 220))
m_bar->move(m_selection->x(), m_selection->y() - 35);
- else if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100 )&& (m_selection->height() > 200))
+ else if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100 )&& (m_selection->height() > 220))
m_bar->move(m_selection->x(), m_selection->y() + m_selection->height() - 35);
else
m_bar->move(m_selection->x() , m_selection->y() + m_selection->height() + 2);
}
- else if((m_selection->x() + m_selection->width()/2 >= m_context.desktop->screenGeometry().width() - 200 )&& (m_selection->width() <= 400))
+ else if((m_selection->x() + m_selection->width()/2 >= m_context.desktop->screenGeometry().width() - 200 )&& (m_selection->width() <= 440))
{
- if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100) && (m_selection->height() <= 200))
- m_bar->move(m_selection->x() + m_selection->width() - 400, m_selection->y() - 35);
- else if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100 )&& (m_selection->height() > 200))
- m_bar->move(m_selection->x() + m_selection->width() - 400, m_selection->y() + m_selection->height() - 35);
+ if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100) && (m_selection->height() <= 220))
+ m_bar->move(m_selection->x() + m_selection->width() - 440, m_selection->y() - 35);
+ else if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100 )&& (m_selection->height() > 220))
+ m_bar->move(m_selection->x() + m_selection->width() - 440, m_selection->y() + m_selection->height() - 35);
else
- m_bar->move(m_selection->x() + m_selection->width() - 400, m_selection->y() + m_selection->height() + 2);
+ m_bar->move(m_selection->x() + m_selection->width() - 440, m_selection->y() + m_selection->height() + 2);
}
else
{
- if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100) && (m_selection->height() <= 200))
+ if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100) && (m_selection->height() <= 220))
m_bar->move(m_selection->x() + m_selection->width()/2 - 175, m_selection->y() - 35);
- else if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100 )&& (m_selection->height() > 200))
+ else if((m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100 )&& (m_selection->height() > 220))
m_bar->move(m_selection->x() + m_selection->width()/2 - 175, m_selection->y() + m_selection->height() - 35);
else
m_bar->move(m_selection->x() + m_selection->width()/2 - 175 , m_selection->y() + m_selection->height() + 2);
@@ -886,6 +916,7 @@ void CaptureWidget::wheelEvent(QWheelEvent *e) {
update();
}
emit thicknessChanged(m_context.thickness);
+ emit thicknessCh(m_context.thickness);
}
void CaptureWidget::resizeEvent(QResizeEvent *e) {
@@ -991,19 +1022,24 @@ void CaptureWidget::setState(CaptureButton *b) {
//m_activeButton->setColor(QColor (87, 250 , 255, 255));
m_activeButton->setColor(Qt::gray);
// qDebug() << b->tool()->name();
- updateToolBar(b->tool()->name());
+
if(b->tool()->name() == "选项")
{
m_menuController->showMenu(b->pos());
m_colorPicker->hide();
+ m_formtip->hide();
+ }
+ else
+ {
+ updateToolBar(b->tool()->name());
}
//m_menuController->showMenu(m_selection->getPoint());
} else if (m_activeButton) {
-
m_panel->clearToolWidget();
m_activeButton->setColor(m_uiColor);
m_activeButton = nullptr;
m_colorPicker->hide();
+ m_formtip->hide();
}
update(); // clear mouse preview
}
@@ -1171,7 +1207,7 @@ void CaptureWidget::initShortcuts() {
new QShortcut(QKeySequence(Qt::SHIFT + Qt::Key_Down), this, SLOT(downResize()));
new QShortcut(Qt::Key_Space, this, SLOT(togglePanel()));
new QShortcut(Qt::Key_Escape, this, SLOT(deleteToolwidgetOrClose()));
- new QShortcut(Qt::Key_Return, this, SLOT(copyScreenshot()));
+ new QShortcut(Qt::Key_Return, this, SLOT(saveScreenshot()));
new QShortcut(Qt::Key_Enter, this, SLOT(saveScreenshot()));
}
@@ -1217,7 +1253,7 @@ void CaptureWidget::updateCursor() {
setCursor(Qt::CrossCursor);
}
} else {
- setCursor(Qt::CrossCursor);
+ setCursor(Qt::ArrowCursor);
}
}
@@ -1266,6 +1302,7 @@ void CaptureWidget::saveScreenshot() {
hide();
//huoqu xitongcanshu
//QString strDir = QDir::homePath();
+
if(m_context.savetip == "desktip")
{
QString strDir = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
@@ -1355,12 +1392,28 @@ void CaptureWidget::menuHide()
void CaptureWidget::updateToolBar(QString toolName)
{
- if(m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 200)
- m_colorPicker->move(m_bar->x(),m_bar->y() - m_colorPicker->height() - 1);
+ if(m_selection->y() + m_selection->height() >= m_context.desktop->screenGeometry().height() - 100)
+ {
+ m_colorPicker->move(m_bar->x() + m_activeButton->geometry().x() - 18, m_bar->y() - m_colorPicker->height() - 9);
+ m_formtip->move(m_bar->x(),m_bar->y() - 9);
+ isReverse = true;
+ }
else
- m_colorPicker->move(m_bar->x(),m_bar->y() + m_bar->height() + 1);
- //qDebug() << toolName;
+ {
+ m_colorPicker->move(m_bar->x() + m_activeButton->geometry().x() - 18, m_bar->y() + m_bar->height() + 9);
+ m_formtip->move(m_bar->x(),m_bar->y() + m_bar->height());
+ isReverse = false;
+ }
+
+
+ m_flag = true;
+ //qDebug() << m_activeButton->mapToGlobal(*p);
+
+ //m_activeButton->getRect();
+ m_formtip->show(QPoint(m_activeButton->x() + m_activeButton->width()/2,m_activeButton->y()),isReverse);
+
m_colorPicker->show(toolName);
+ update();
}
void CaptureWidget::setDrawRectStyle(const int &s)
@@ -1368,7 +1421,6 @@ void CaptureWidget::setDrawRectStyle(const int &s)
m_context.graphic_style = s;
}
-
void CaptureWidget::setDrawLineStyle(const int &l)
{
m_context.line_style = l;
diff --git a/src/widgets/capture/capturewidget.h b/src/widgets/capture/capturewidget.h
index 1baa172..2141af7 100755
--- a/src/widgets/capture/capturewidget.h
+++ b/src/widgets/capture/capturewidget.h
@@ -25,7 +25,7 @@
#include "menucontroller.h"
#include "toptips.h"
-
+#include "formtip.h"
#include "zoomIndicator.h"
#include "baseutils.h"
#include "capturewidget.h"
@@ -152,6 +152,7 @@ protected:
bool m_previewEnabled;
bool m_adjustmentButtonPressed;
bool m_inselection = true;
+ bool m_flag = false;
private:
void initSecondUI();
@@ -198,6 +199,7 @@ private:
QPixmap m_backgroundPixmap;
bool m_isFirstReleaseButton;
+ bool isReverse=false;
MenuController* m_menuController;
@@ -214,6 +216,9 @@ private:
QLabel *m_toolbar;
QWidget *toolwidget;
+ QPainterPath path;
+
+ FormTip *m_formtip;
// Kwindowmanager *test;
};
diff --git a/src/widgets/capture/colorpicker.cpp b/src/widgets/capture/colorpicker.cpp
index 845dadc..f50fd58 100755
--- a/src/widgets/capture/colorpicker.cpp
+++ b/src/widgets/capture/colorpicker.cpp
@@ -25,6 +25,8 @@
#include "src/tools/colorbutton.h"
#include "src/tools/rectbutton.h"
#include "src/tools/linebutton.h"
+#include "src/widgets/capture/toowidget.h"
+#include "src/widgets/capture/thicknesswidget.h"
#include <QDebug>
#include <QPainter>
@@ -38,7 +40,7 @@
#include <QComboBox>
namespace {
- const int TOOLBAR_HEIGHT = 50;
+ const int TOOLBAR_HEIGHT = 30;
const int TOOLBAR_WIDTH = 300;
const int BUTTON_SPACING = 1;
const int COLOR_NUM = 5;
@@ -46,7 +48,7 @@ namespace {
}
//右键呼出的调色板
-ColorPicker::ColorPicker(int m_thickness,QColor m_color, QWidget *parent) : QWidget(parent) {
+ColorPicker::ColorPicker(int thickness,QColor m_color, QWidget *parent) : QWidget(parent) {
//this->resize(50,300);
setCursor(Qt::ArrowCursor);
this->setMouseTracking(true);
@@ -59,320 +61,50 @@ ColorPicker::ColorPicker(int m_thickness,QColor m_color, QWidget *parent) : QWid
// save the color values in member variables for faster access
m_uiColor = config.uiMainColorValue();
m_drawColor = config.drawColorValue();
- // extraSize represents the extra space needed for the highlight of the
- // selected color.
- /* const int extraSize = 6;
- double radius = (m_colorList.size()*m_colorAreaSize/1.3)/(3.141592);
- resize(radius*2 + m_colorAreaSize + extraSize,
- radius*2 + m_colorAreaSize+ extraSize);
- double degree = 360 / (m_colorList.size());
- double degreeAcum = degree;
- // this line is the radius of the circle which will be rotated to add
- // the color components.
- QLineF baseLine = QLineF(QPoint(radius+extraSize/2, radius+extraSize/2),
- QPoint(radius*2, radius));
-
- for (int i = 0; i<m_colorList.size(); ++i) {
- m_colorAreaList.append(QRect(baseLine.x2(), baseLine.y2(),
- m_colorAreaSize, m_colorAreaSize));
- baseLine.setAngle(degreeAcum);
- degreeAcum += degree;
- }*/
+ m_thickness = thickness;
setStyleSheet(getFileContent(":/subtoolbar.qss"));
setFixedSize(TOOLBAR_WIDTH, TOOLBAR_HEIGHT);
setStyleSheet("QWidget{border-radius:4px;background-color:white;}");
- /*m_rectLabel = new QLabel(this);
- m_colorLabel = new QLabel(this);*/
-
- lastWidget = new QWidget();
- m_rectLabel = new QWidget(this);
- /*m_arrowLabel = new QWidget(this);
- m_lineLabel = new QWidget(this);*/
- m_textLabel = new QWidget(this);
- m_colorLabel = new QWidget(this);
- // m_thicknessLabel = new QWidget(this);
-
- m_rectLabel->setMinimumWidth(150);
- /*m_arrowLabel->setMinimumWidth(200);
- m_lineLabel->setMinimumWidth(200);*/
- m_textLabel->setMinimumWidth(150);
-
- /*m_rectLabel->setMinimumHeight(30);
- m_arrowLabel->setMinimumHeight(30);
- m_lineLabel->setMinimumHeight(30);
- m_textLabel->setMinimumHeight(30);*/
-
- m_rectLabel->setMouseTracking(true);
- /* m_arrowLabel->setMouseTracking(true);
- m_lineLabel->setMouseTracking(true);*/
- m_textLabel->setMouseTracking(true);
- m_colorLabel->setMouseTracking(true);
-
-
- /* m_rectLabel->setStyleSheet("QWidget{border-radius:4px;padding:2px 4px;background-color:white;}");
- m_arrowLabel->setStyleSheet("QWidget{border-radius:4px;padding:2px 4px;background-color:white;}");
- m_lineLabel->setStyleSheet("QWidget{border-radius:4px;padding:2px 4px;background-color:white;}");
- m_textLabel->setStyleSheet("QWidget{border-radius:4px;padding:2px 4px;background-color:white;}");
- m_colorLabel->setStyleSheet("QWidget{border-radius:4px;padding:2px 4px;background-color:white;}");*/
-
- //initThcikness(m_thickness);
- initRectLabel(m_thickness);
- /* initArrowLabel(m_thickness);
-
- initLineLabel(m_thickness);*/
- initTextLabel();
- initColorLabel(m_color);
-
- QLabel* SeparatorLine = new QLabel();
- SeparatorLine->setFixedSize(1, 20);
- SeparatorLine->setObjectName("VerticalSeparatorLine");
-
- lastWidget = m_rectLabel;
- m_Layout = new QHBoxLayout();
- m_Layout->addWidget(m_rectLabel);
- /*m_Layout->addSpacing(8);
- m_Layout->addWidget(SeparatorLine);
- m_Layout->addSpacing(8);*/
- m_Layout->addWidget(m_colorLabel);
- m_Layout->addStretch();
- this->setLayout(m_Layout);
- QPalette pal(this->palette());
+ label = new QLabel(this);
+ label->setFixedSize(222,30);
+ QPalette pal(label->palette());
pal.setColor(QPalette::Background, Qt::white);
- this->setAutoFillBackground(true);
-
-}
-
-void ColorPicker::initRectLabel(int m_thickness)
-{
- m_rectLabel->setStyleSheet(getFileContent(":/thicknessbutton.qss"));
- QButtonGroup* rectBtnGroup = new QButtonGroup();
- rectBtnGroup->setExclusive(true);
- QList<ToolButton*> btnList;
- //rectangle, oval...
-
- fineLine = new ToolButton(SMALL_SIZE);
- fineLine->setObjectName("FineLine");
- rectBtnGroup->addButton(fineLine);
- btnList.append(fineLine);
- mediumLine = new ToolButton(MEDIUM_SIZE);
- mediumLine->setObjectName("MediumLine");
- rectBtnGroup->addButton(mediumLine);
- btnList.append(mediumLine);
- thickLine = new ToolButton(LARGE_SIZE);
- thickLine->setObjectName("ThickLine");
- //thickLine->setStyleSheet("QPushButton{border-radius:15px;background-color:#000000;}");
- rectBtnGroup->addButton(thickLine);
- btnList.append(thickLine);
- //separator line...
- QLabel* vSeparatorLine = new QLabel();
- vSeparatorLine->setFixedSize(1, 20);
- vSeparatorLine->setObjectName("VerticalSeparatorLine");
+ label->setAutoFillBackground(true);
+
+ tWidget = new Toowidget(m_drawColor,this);
+ connect(tWidget, &Toowidget::colorSelected, this, &ColorPicker::updateColor);
+ tWidget->setFixedSize(222,30);
+ tWidget->show();
+
+ thicknessWidget = new ThicknessWidget(m_thickness,this);
+ connect(thicknessWidget, &ThicknessWidget::thicknessSelected, this, &ColorPicker::updateThickness_tool);
+ connect(this,&ColorPicker::thicknessCh_tool, thicknessWidget, &ThicknessWidget::updateThickness);
+ thicknessWidget->setFixedSize(66,30);
+ //thicknessWidget->setStyleSheet(getFileContent(":/resources/qss/textbutton.qss"));
+ thicknessWidget->hide();
+
+ m_textLabel = new QLabel();
+ m_textLabel->resize(100,30);
+
+ textButton = new TextButton(m_thickness);
+ textButton->setFixedSize(44,18);
+ textButton->setStyleSheet("QComboBox{border-radius:3px;padding:2px 4px;background-color:#e9e9e9;color: black}");
+ connect(textButton, &TextButton::updateThickness,
+ this, &ColorPicker::updateThickness_font);
+ //textButton->setStyleSheet(getFileContent(":/textbutton.qss"));
QHBoxLayout* rectLayout = new QHBoxLayout();
rectLayout->setMargin(0);
- rectLayout->setSpacing(0);
- rectLayout->addSpacing(1);
- for (int i = 0; i < btnList.length(); i++) {
- //btnList[i]->setFixedSize(30,30);
- btnList[i]->setStyleSheet("border-radius:4px");
- rectLayout->addWidget(btnList[i]);
- if(m_thickness == btnList[i]->m_thickness)
- btnList[i]->setChecked(true);
- rectLayout->addSpacing(BUTTON_SPACING);
- connect(btnList[i], &ToolButton::updateThickness,
- this, &ColorPicker::updateThickness);
- }
-
- rectLayout->addStretch();
- m_rectLabel->setLayout(rectLayout);
- //addWidget(m_rectLabel);
- m_rectLabel->show();
-
-}
-
-/*
-void ColorPicker::initArrowLabel(int m_thickness)
-{
- //arrow
- QButtonGroup* arrowBtnGroup = new QButtonGroup();
- arrowBtnGroup->setExclusive(true);
- QList<ToolButton*> arrowBtnList;
- ToolButton* arrowFineLine = new ToolButton(SMALL_SIZE);
- arrowFineLine->setObjectName("ArrowFine");
- arrowBtnGroup->addButton(arrowFineLine);
- arrowBtnList.append(arrowFineLine);
- ToolButton* arrowMediumLine = new ToolButton(MEDIUM_SIZE);
- arrowMediumLine->setObjectName("ArrowMedium");
- arrowBtnGroup->addButton(arrowMediumLine);
- arrowBtnList.append(arrowMediumLine);
- ToolButton* arrowThickLine = new ToolButton(LARGE_SIZE);
- arrowThickLine->setObjectName("ArrowThick");
- arrowBtnGroup->addButton(arrowThickLine);
- arrowBtnList.append(arrowThickLine);
- //line
- QButtonGroup* lineBtnGroup = new QButtonGroup();
- lineBtnGroup->setExclusive(true);
- //rectangle, oval...
- ToolButton* fineLine = new ToolButton(5);
- fineLine->setObjectName("ArrowFineLine");
- lineBtnGroup->addButton(fineLine);
- arrowBtnList.append(fineLine);
- ToolButton* mediumLine = new ToolButton(5);
- mediumLine->setObjectName("ArrowMediumLine");
- lineBtnGroup->addButton(mediumLine);
- arrowBtnList.append(mediumLine);
- ToolButton* thickLine = new ToolButton(5);
- thickLine->setObjectName("ArrowThickLine");
- lineBtnGroup->addButton(thickLine);
- arrowBtnList.append(thickLine);
- //separator line...
- QLabel* vSeparatorLine = new QLabel();
- vSeparatorLine->setFixedSize(1, 20);
- vSeparatorLine->setObjectName("VerticalSeparatorLine");
-
- QButtonGroup* styleBtnGroup = new QButtonGroup;
- styleBtnGroup->setExclusive(true);
- LineButton* lineBtn = new LineButton(1);
- lineBtn->setObjectName("LineBtn");
- lineBtn->setChecked(true);
- styleBtnGroup->addButton(lineBtn, 0);
- LineButton* arrowBtn = new LineButton(2);
- arrowBtn->setObjectName("ArrowBtn");
- //arrowBtn->setChecked(true);
- styleBtnGroup->addButton(arrowBtn, 1);
- connect(lineBtn, &LineButton::updateLine,
- this, &ColorPicker::updateLine);
- connect(arrowBtn, &LineButton::updateLine,
- this, &ColorPicker::updateLine);
-
- QHBoxLayout* arrowLayout = new QHBoxLayout();
- arrowLayout->setMargin(0);
- arrowLayout->setSpacing(0);
- arrowLayout->addSpacing(1);
- for (int j = 0; j < arrowBtnList.length(); j++) {
- arrowLayout->addWidget(arrowBtnList[j]);
- arrowLayout->addSpacing(BUTTON_SPACING);
- if(m_thickness == arrowBtnList[j]->m_thickness)
- arrowBtnList[j]->setChecked(true);
- arrowLayout->addSpacing(BUTTON_SPACING);
- connect(arrowBtnList[j], &ToolButton::updateThickness,
- this, &ColorPicker::updateThickness);
- }
- arrowLayout->addSpacing(5);
- arrowLayout->addWidget(vSeparatorLine);
- arrowLayout->addSpacing(8);
- arrowLayout->addWidget(lineBtn);
- arrowLayout->addSpacing(BUTTON_SPACING);
- arrowLayout->addWidget(arrowBtn);
- arrowLayout->addStretch();
- m_arrowLabel->setLayout(arrowLayout);
-
- fineLine->hide();
- mediumLine->hide();
- thickLine->hide();
-}
-*/
-
-/*
-void ColorPicker::initLineLabel(int m_thickness)
-{
- //rectangle, oval...
- QButtonGroup* lineBtnGroup = new QButtonGroup();
- lineBtnGroup->setExclusive(true);
- QList<ToolButton*> btnList;
-
- ToolButton* fineLine = new ToolButton(SMALL_SIZE);
- fineLine->setObjectName("FineLine");
- lineBtnGroup->addButton(fineLine);
- btnList.append(fineLine);
- ToolButton* mediumLine = new ToolButton(MEDIUM_SIZE);
- mediumLine->setObjectName("MediumLine");
- lineBtnGroup->addButton(mediumLine);
- btnList.append(mediumLine);
- ToolButton* thickLine = new ToolButton(LARGE_SIZE);
- thickLine->setObjectName("ThickLine");
- lineBtnGroup->addButton(thickLine);
- btnList.append(thickLine);
-
- QHBoxLayout* lineLayout = new QHBoxLayout();
- lineLayout->setMargin(0);
- lineLayout->setSpacing(0);
- lineLayout->addSpacing(1);
- for(int k = 0; k < btnList.length(); k++) {
- lineLayout->addWidget(btnList[k]);
- if(m_thickness == btnList[k]->m_thickness)
- btnList[k]->setChecked(true);
- lineLayout->addSpacing(BUTTON_SPACING);
- connect(btnList[k], &ToolButton::updateThickness,
- this, &ColorPicker::updateThickness);
- }
-
- lineLayout->addStretch();
- m_lineLabel->setLayout(lineLayout);
-}*/
-
-void ColorPicker::initTextLabel()
-{
- m_textLabel->setStyleSheet(getFileContent(":/resources/qss/textbutton.qss"));
-
- textButton = new TextButton(SMALL_SIZE);
- textButton->setFixedSize(60,18);
- textButton->setStyleSheet("QComboBox{border-radius:4px;padding:2px 4px;background-color:#e9e9e9;}");
- connect(textButton, &TextButton::updateThickness,
- this, &ColorPicker::updateThickness);
-
- //int defaultFontSize = ConfigSettings::instance()->value("text", "fontsize").toInt();
-
- QHBoxLayout* textLayout = new QHBoxLayout();
- textLayout->setMargin(0);
- textLayout->setSpacing(0);
- textLayout->addSpacing(2);
- textLayout->addWidget(textButton);
- textLayout->addSpacing(BUTTON_SPACING);
-
- textLayout->addStretch();
- m_textLabel->setLayout(textLayout);
-}
+ rectLayout->setSpacing(8);
+ rectLayout->addWidget(textButton);
+ //rectLayout->addWidget(m_textLabel);
-void ColorPicker::initColorLabel(QColor m_color)
-{
- m_colorLabel->setStyleSheet(getFileContent(":/colorbtn.qss"));
- //m_colorLabel->resize(400,50);
-
- QList<ColorButton*> colorBtnList;
- QButtonGroup* colorBtnGroup = new QButtonGroup(m_colorLabel);
- colorBtnGroup->setExclusive(true);
-
- for(int i = 0; i < COLOR_NUM; i ++) {
- ColorButton* colorBtn = new ColorButton(colorIndexOf(i));
- if(colorIndexOf(i) == m_color)
- colorBtn->setChecked(true);
- colorBtn->setObjectName(QString("ColorBtn%1").arg(i+1));
- colorBtn->setFixedSize(23,23);
- colorBtnList.append(colorBtn);
- colorBtnGroup->addButton(colorBtn);
- }
-
- QHBoxLayout* colorLayout = new QHBoxLayout();
- colorLayout->setMargin(0);
- colorLayout->setSpacing(5);
- colorLayout->addSpacing(10);
- for(int i = 0; i < colorBtnList.length(); i++) {
- colorLayout->addWidget(colorBtnList[i]);
- colorLayout->addSpacing(10);
- connect(colorBtnList[i], &ColorButton::updatePaintColor,
- this, &ColorPicker::updateColor);
- }
- colorLayout->addSpacing(10);
- colorLayout->addStretch();
- m_colorLabel->setLayout(colorLayout);
-
- //addWidget(m_colorLabel);
- //m_colorLabel->hide();
+ rectLayout->addSpacing(8);
+ thicknessWidget->setLayout(rectLayout);
- //addWidget(m_colorLabel);
+ update();
}
void ColorPicker::updateLine(int m_line)
@@ -385,10 +117,19 @@ void ColorPicker::updateStyle(int m_style)
emit styleSelected(m_style);
}
-void ColorPicker::updateThickness(int thickness)
+void ColorPicker::updateThickness_tool(int thickness)
{
- printf("#######\n");
- emit thicknessSelected(thickness);
+ m_thickness = thickness;
+ emit thicknessSelected(m_thickness);
+// emit thicknessCh_font(m_thickness);
+ thicknessCh_font(m_thickness);
+}
+
+void ColorPicker::updateThickness_font(int thickness)
+{
+ m_thickness = thickness;
+ emit thicknessSelected(m_thickness);
+ emit thicknessCh_tool(m_thickness);
}
void ColorPicker::updateColor(QColor color)
@@ -404,100 +145,21 @@ QColor ColorPicker::drawColor() {
void ColorPicker::thicknessChanged(int thickness)
{
- printf("test:%d\n",thickness);
- if(thickness == SMALL_SIZE)
- {
- fineLine->setChecked(true);
- textButton->setCurrentIndex(0);
- }
- else if(thickness == MEDIUM_SIZE)
- {
- mediumLine->setChecked(true);
- textButton->setCurrentIndex(1);
- }
- else if(thickness == LARGE_SIZE)
+ m_thickness = thickness;
+ emit thicknessCh_tool(m_thickness);
+ thicknessCh_font(m_thickness);
+}
+
+void ColorPicker::show(QString toolName) {
+ if(toolName == "文本")
{
- thickLine->setChecked(true);
- textButton->setCurrentIndex(2);
+ thicknessWidget->hide();
+ textButton->show();
}
else
{
- fineLine->setChecked(false);
- mediumLine->setChecked(false);
- thickLine->setChecked(false);
- }
-}
-
-void ColorPicker::show(QString toolName) {
- //grabMouse();
- int toolNum = 99;
-
- if(toolName == "铅笔" || toolName == "直线" || toolName == "标记")
- //toolNum = 1;
- toolNum = 3;
- else if(toolName == "箭头")
- //toolNum = 3;
- toolNum = 2;
- else if(toolName == "矩形选择" || toolName == "实心矩形" || toolName == "圆环")
- toolNum = 3;
- else if(toolName == "文本")
- toolNum = 4;
-
- if(!m_rectLabel->isHidden())
- lastWidget = m_rectLabel;
- /*else if(!m_lineLabel->isHidden())
- lastWidget = m_lineLabel;
- else if(!m_arrowLabel->isHidden())
- lastWidget = m_arrowLabel;*/
- else if(!m_textLabel->isHidden())
- lastWidget = m_textLabel;
-
- switch(toolNum) {
- /* case 1:
- if(lastWidget != m_lineLabel)
- m_Layout->replaceWidget(lastWidget,m_lineLabel);
- m_textLabel->hide();
- m_rectLabel->hide();
- m_arrowLabel->hide();
- m_lineLabel->show();
- m_colorLabel->show();
- break;*/
- /*case 2:
- if(lastWidget != m_arrowLabel)
- m_Layout->replaceWidget(lastWidget,m_arrowLabel);
- m_textLabel->hide();
- m_rectLabel->hide();
- m_arrowLabel->show();
- m_lineLabel->hide();
- m_colorLabel->show();
- break;*/
- case 1:
- case 2:
- case 3:
- if(lastWidget != m_rectLabel)
- m_Layout->replaceWidget(lastWidget,m_rectLabel);
- m_textLabel->hide();
- m_rectLabel->show();
- /*m_arrowLabel->hide();
- m_lineLabel->hide();*/
- m_colorLabel->show();
- break;
- case 4:
- if(lastWidget != m_textLabel)
- m_Layout->replaceWidget(lastWidget,m_textLabel);
- m_textLabel->show();
- m_rectLabel->hide();
- /* m_arrowLabel->hide();
- m_lineLabel->hide();*/
- m_colorLabel->show();
- break;
- default:
- m_textLabel->hide();
- m_rectLabel->hide();
- /*m_arrowLabel->hide();
- m_lineLabel->hide();*/
- m_colorLabel->hide();
- break;
+ thicknessWidget->show();
+ textButton->hide();
}
QWidget::show();
}
@@ -506,49 +168,18 @@ void ColorPicker::hide() {
QWidget::hide();
}
-void ColorPicker::paintEvent(QPaintEvent *) {
- /*QPainter painter(this);
- painter.setRenderHint(QPainter::Antialiasing);
-
- QVector<QRect> rects = handleMask();
- painter.setPen(QColor(Qt::black));
- for (int i = 0; i < rects.size(); ++i) {
- // draw the highlight when we have to draw the selected color
- if (m_drawColor == QColor(m_colorList.at(i))) {
- QColor c = QColor(m_uiColor);
- c.setAlpha(155);
- painter.setBrush(c);
- c.setAlpha(100);
- painter.setPen(c);
- QRect highlight = rects.at(i);
- highlight.moveTo(highlight.x() - 3, highlight.y() - 3);
- highlight.setHeight(highlight.height() + 6);
- highlight.setWidth(highlight.width() + 6);
- //painter.drawRect(highlight);
- //painter.drawRoundRect(highlight, 100, 100);
- painter.setPen(QColor(Qt::white));
- }
- painter.setBrush(QColor(m_colorList.at(i)));
- //painter.drawRoundRect(rects.at(i), 100, 100);
- painter.drawRect(rects.at(i));
- }*/
-}
-
-void ColorPicker::mouseMoveEvent(QMouseEvent *e) {
- /*for (int i = 0; i < m_colorList.size(); ++i) {
- if (m_colorAreaList.at(i).contains(e->pos())) {
- m_drawColor = m_colorList.at(i);
- emit colorSelected(m_drawColor);
- update();
- break;
- }
- }*/
-}
-
-/*QVector<QRect> ColorPicker::handleMask() const {
- QVector<QRect> areas;
- for (const QRect &rect: m_colorAreaList) {
- areas.append(rect);
+void ColorPicker::thicknessCh_font(int thickness)
+{
+ if(m_thickness == SMALL_SIZE)
+ {
+ textButton->setCurrentIndex(0);
+ }
+ else if(m_thickness == MEDIUM_SIZE)
+ {
+ textButton->setCurrentIndex(1);
}
- return areas;
-}*/
+ else if(m_thickness == LARGE_SIZE)
+ {
+ textButton->setCurrentIndex(2);
+ }
+}
diff --git a/src/widgets/capture/colorpicker.h b/src/widgets/capture/colorpicker.h
index 797a302..dfdcb62 100755
--- a/src/widgets/capture/colorpicker.h
+++ b/src/widgets/capture/colorpicker.h
@@ -24,11 +24,13 @@
#include "src/tools/rectbutton.h"
#include "src/tools/toolbutton.h"
#include "textbutton.h"
+#include "toowidget.h"
+#include "thicknesswidget.h"
class ColorPicker : public QWidget {
Q_OBJECT
public:
- explicit ColorPicker(int m_thickness, QColor m_color, QWidget *parent = nullptr);
+ explicit ColorPicker(int thickness, QColor m_color, QWidget *parent = nullptr);
QColor drawColor();
@@ -43,7 +45,8 @@ public:
public slots:
void updateColor(QColor color);
- void updateThickness(int thickness);
+ void updateThickness_tool(int thickness);
+ void updateThickness_font(int thickness);
void updateStyle(int m_style);
void updateLine(int m_line);
void thicknessChanged(int thickness);
@@ -53,12 +56,11 @@ signals:
void thicknessSelected(int thickness);
void styleSelected(int m_style);
void lineSelected(int m_line);
+ void thicknessCh_tool(int thickness);
-protected:
- void paintEvent(QPaintEvent *);
- void mouseMoveEvent(QMouseEvent *);
- //QVector<QRect> handleMask() const;
+protected:
+ void thicknessCh_font(int thickness);
private:
int m_colorAreaSize;
@@ -66,15 +68,16 @@ private:
QVector<QColor> m_colorList;
QColor m_uiColor, m_drawColor;
+ int m_thickness;
QWidget* m_rectLabel;
QWidget* m_colorLabel;
QWidget* m_thicknessLabel;
//QLabel* m_rectLabel;
- QWidget* m_arrowLabel;
- QWidget* m_lineLabel;
- QWidget* m_textLabel;
+// QWidget* m_arrowLabel;
+// QWidget* m_lineLabel;
+ //QWidget* m_textLabel;
//QLabel* m_colorLabel;
QWidget* m_saveLabel;
@@ -88,4 +91,10 @@ private:
ToolButton* mediumLine;
ToolButton* thickLine;
TextButton* textButton;
+
+ QLabel *label;
+ QLabel *m_textLabel;
+
+ Toowidget *tWidget;
+ ThicknessWidget *thicknessWidget;
};
diff --git a/src/widgets/capture/fontwidget.h b/src/widgets/capture/fontwidget.h
new file mode 100644
index 0000000..b51c087
--- /dev/null
+++ b/src/widgets/capture/fontwidget.h
@@ -0,0 +1,38 @@
+#ifndef FONTWIDGET_H
+#define FONTWIDGET_H
+
+#include "textbutton.h"
+#include <QWidget>
+
+class FontWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit FontWidget(int thickness, QWidget *parent = nullptr);
+
+public slots:
+ void updateThickness(int size);
+ void thicknessChanged(int size);
+
+signals:
+ void thicknessSelected(int size);
+
+protected:
+ void initTextLabel();
+
+private:
+ int m_colorAreaSize;
+
+ QVector<QRect> m_thinknessAreaList;
+ QVector<int> m_thinknessList;
+
+ int m_thinkness, m_drawThinkness, m_selectThinkness;
+
+ bool m_inselection = false;
+
+ QWidget* m_textLabel;
+
+ TextButton *textButton;
+};
+
+#endif // FONTWIDGET_H
diff --git a/src/widgets/capture/formtip.cpp b/src/widgets/capture/formtip.cpp
new file mode 100644
index 0000000..f3de166
--- /dev/null
+++ b/src/widgets/capture/formtip.cpp
@@ -0,0 +1,47 @@
+#include "formtip.h"
+
+#include <QPainter>
+#include <QMouseEvent>
+
+FormTip::FormTip(QWidget *parent) : QWidget(parent)
+{
+ setCursor(Qt::ArrowCursor);
+ this->setMouseTracking(true);
+ this->resize(535,20);
+}
+
+void FormTip::paintEvent(QPaintEvent *) {
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ QPainterPath path;
+ if(m_isReverse)
+ {
+ path.moveTo(QPoint(point.x(), point.y() + 6));
+ path.lineTo(QPoint(point.x() -6, point.y()));
+ path.lineTo(QPoint(point.x() + 6, point.y()));
+ path.lineTo(QPoint(point.x() , point.y() + 6));
+ }
+ else
+ {
+ path.moveTo(QPoint(point.x(), point.y() + 3));
+ path.lineTo(QPoint(point.x() -6, point.y() + 9));
+ path.lineTo(QPoint(point.x() + 6, point.y() + 9));
+ path.lineTo(QPoint(point.x() , point.y() + 3));
+ }
+ painter.fillPath(path,QBrush(Qt::white));
+}
+
+void FormTip::show(const QPoint p,bool isReverse)
+{
+ point = p;
+ m_isReverse = isReverse;
+ update();
+
+ QWidget::show();
+}
+
+void FormTip::hide()
+{
+ QWidget::hide();
+}
diff --git a/src/widgets/capture/formtip.h b/src/widgets/capture/formtip.h
new file mode 100644
index 0000000..393b1aa
--- /dev/null
+++ b/src/widgets/capture/formtip.h
@@ -0,0 +1,23 @@
+#ifndef FORMTIP_H
+#define FORMTIP_H
+
+#include <QWidget>
+
+class FormTip : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit FormTip(QWidget *parent = nullptr);
+
+ void show(const QPoint p, bool isReverse);
+ void hide();
+
+protected:
+ void paintEvent(QPaintEvent *);
+
+private:
+ QPoint point;
+ bool m_isReverse = false;
+};
+
+#endif // FORMTIP_H
diff --git a/src/widgets/capture/thicknesswidget.cpp b/src/widgets/capture/thicknesswidget.cpp
new file mode 100644
index 0000000..b6b693d
--- /dev/null
+++ b/src/widgets/capture/thicknesswidget.cpp
@@ -0,0 +1,120 @@
+#include "thicknesswidget.h"
+#include "src/utils/confighandler.h"
+#include "src/utils/globalvalues.h"
+#include "baseutils.h"
+
+#include <QDebug>
+#include <QPainter>
+#include <QMouseEvent>
+#include <QButtonGroup>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QGraphicsScene>
+#include <QGraphicsView>
+#include <QWidget>
+#include <QComboBox>
+
+ThicknessWidget::ThicknessWidget(int thickness,QWidget *parent) : QWidget(parent)
+{
+ setCursor(Qt::ArrowCursor);
+ this->setMouseTracking(true);
+
+ ConfigHandler config;
+ m_thinknessList = {SMALL_SIZE,MEDIUM_SIZE,LARGE_SIZE};
+ //m_colorAreaSize = GlobalValues::buttonBaseSize() * 0.6;
+ m_thinknessAreaList = handleMask();
+ m_selectThinkness = thickness;
+ m_drawThinkness = thickness;
+
+ update();
+}
+
+void ThicknessWidget::paintEvent(QPaintEvent *) {
+ if(m_ishide)
+ return;
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ //QVector<QRect> rects = handleMask();
+ painter.setPen(Qt::NoPen);
+ for (int i = 0; i < m_thinknessAreaList.size(); ++i) {
+
+ if (m_drawThinkness == int(m_thinknessList.at(i))) {
+ painter.setBrush(QColor(56,168,255));
+ painter.drawEllipse(m_thinknessAreaList.at(i));
+ }
+ else
+ {
+ painter.setBrush(Qt::gray);
+ //painter.drawRoundRect(rects.at(i), 100, 100);
+ painter.drawEllipse(m_thinknessAreaList.at(i));
+ //draw the highlight when we have to draw the selected color
+ }
+
+ if(m_selectThinkness == int(m_thinknessList.at(i)) && m_selectThinkness != m_drawThinkness)
+ {
+ painter.setBrush(Qt::blue);
+ painter.drawEllipse(m_thinknessAreaList.at(i));
+ }
+ }
+}
+
+void ThicknessWidget::mousePressEvent(QMouseEvent *e) {
+ if(m_ishide)
+ return;
+ if (e->button() == Qt::LeftButton)
+ {
+ for (int i = 0; i < m_thinknessList.size(); ++i) {
+ if (m_thinknessAreaList.at(i).contains(e->pos())) {
+ m_drawThinkness = m_thinknessList.at(i);
+ emit thicknessSelected(m_drawThinkness);
+ update();
+ break;
+ }
+ }
+ }
+}
+
+void ThicknessWidget::mouseMoveEvent(QMouseEvent *e) {
+ if(m_ishide)
+ return;
+ for (int i = 0; i < m_thinknessList.size(); ++i) {
+ if (m_thinknessAreaList.at(i).contains(e->pos())) {
+ m_selectThinkness = m_thinknessList.at(i);
+ //emit colorSelected(m_drawColor);
+ update();
+ break;
+ }
+ m_selectThinkness = 0;
+ update();
+ }
+}
+
+QVector<QRect> ThicknessWidget::handleMask() const {
+ QVector<QRect> areas;
+ int spacing = 0;
+ for (int i = 0; i < m_thinknessList.size(); ++i) {
+ spacing += i*4;
+ QRect *rect = new QRect(8 + i * 10 + spacing , 13 - i * 2 , (i+1)*4, (i+1)*4);
+ areas.append(*rect);
+ }
+ return areas;
+}
+
+void ThicknessWidget::updateThickness(int size)
+{
+ m_drawThinkness = size;
+ update();
+}
+
+void ThicknessWidget::hide()
+{
+ m_ishide = true;
+ update();
+}
+
+void ThicknessWidget::show()
+{
+ m_ishide = false;
+ update();
+}
diff --git a/src/widgets/capture/thicknesswidget.h b/src/widgets/capture/thicknesswidget.h
new file mode 100644
index 0000000..b6b3400
--- /dev/null
+++ b/src/widgets/capture/thicknesswidget.h
@@ -0,0 +1,46 @@
+#ifndef THICKNESSWIDGET_H
+#define THICKNESSWIDGET_H
+
+#pragma once
+
+#include <QWidget>
+#include <QWidget>
+#include <QLabel>
+#include <QHBoxLayout>
+
+class ThicknessWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit ThicknessWidget(int thickness, QWidget *parent = nullptr);
+
+public slots:
+ void updateThickness(int size);
+ void hide();
+ void show();
+
+signals:
+ void thicknessSelected(int size);
+
+protected:
+ void paintEvent(QPaintEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+
+ QVector<QRect> handleMask() const;
+
+private:
+ int m_colorAreaSize;
+
+ QVector<QRect> m_thinknessAreaList;
+ QVector<int> m_thinknessList;
+
+ int m_thinkness, m_drawThinkness, m_selectThinkness;
+
+ bool m_inselection = false;
+ bool m_ishide = false;
+};
+
+#endif // THICKNESSWIDGET_H
+
+
diff --git a/src/widgets/capture/toowidget.cpp b/src/widgets/capture/toowidget.cpp
new file mode 100644
index 0000000..ace1950
--- /dev/null
+++ b/src/widgets/capture/toowidget.cpp
@@ -0,0 +1,139 @@
+#include "toowidget.h"
+#include "src/utils/confighandler.h"
+#include "src/utils/globalvalues.h"
+
+#include <QDebug>
+#include <QPainter>
+#include <QMouseEvent>
+#include <QButtonGroup>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QGraphicsScene>
+#include <QGraphicsView>
+#include <QWidget>
+#include <QComboBox>
+
+Toowidget::Toowidget(QColor m_color,QWidget *parent) : QWidget(parent)
+{
+ setCursor(Qt::ArrowCursor);
+ this->setMouseTracking(true);
+
+ ConfigHandler config;
+ m_colorList = config.getUserColors();
+ m_colorAreaSize = GlobalValues::buttonBaseSize() * 0.6;
+ m_colorAreaList = handleMask();
+ m_selectColor = m_color;
+ m_drawColor = m_color;
+
+ update();
+}
+
+void Toowidget::paintEvent(QPaintEvent *) {
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ //QVector<QRect> rects = handleMask();
+ painter.setPen(Qt::NoPen);
+
+ painter.setBrush(m_drawColor);
+ painter.drawRect(m_colorAreaList.at(0).x() - 30, m_colorAreaList.at(0).y() - 4, 20, 20);
+ if(m_drawColor == Qt::white)
+ {
+ QPen pen = QPen();
+ pen.setColor(Qt::black);
+ pen.setWidthF(0.3);
+ painter.setPen(pen);
+ painter.drawRect(m_colorAreaList.at(0).x() - 30, m_colorAreaList.at(0).y() -4, 20, 20);
+ painter.setPen(Qt::NoPen);
+ }
+
+ for (int i = 0; i < m_colorAreaList.size(); ++i) {
+ painter.setBrush(QColor(m_colorList.at(i)));
+ //painter.drawRoundRect(rects.at(i), 100, 100);
+ painter.drawRect(m_colorAreaList.at(i));
+ if(QColor(m_colorList.at(i)) == Qt::white)
+ {
+ QPen pen = QPen();
+ pen.setColor(Qt::black);
+ pen.setWidthF(0.3);
+ painter.setPen(pen);
+ painter.drawRect(m_colorAreaList.at(i));
+ painter.setPen(Qt::NoPen);
+
+ }
+ //draw the highlight when we have to draw the selected color
+ if (m_drawColor == QColor(m_colorList.at(i))) {
+ if(m_drawColor == Qt::white)
+ {
+ QPen pen = QPen();
+ pen.setColor(Qt::black);
+ pen.setWidthF(0.5);
+ painter.setPen(pen);
+ painter.drawRect(m_colorAreaList.at(i).x() + 3, m_colorAreaList.at(i).y() + 3, 6, 6);
+ painter.setPen(Qt::NoPen);
+ }
+ else{
+ painter.setBrush(Qt::white);
+ painter.drawRect(m_colorAreaList.at(i).x() + 3, m_colorAreaList.at(i).y() + 3, 6, 6);
+ }
+ }
+ if(m_selectColor == QColor(m_colorList.at(i)) && m_selectColor != m_drawColor)
+ {
+ if(m_selectColor == Qt::white)
+ {
+ QPen pen = QPen();
+ pen.setColor(Qt::black);
+ pen.setWidthF(0.5);
+ painter.setPen(pen);
+ painter.drawRect(m_colorAreaList.at(i).x() + 3, m_colorAreaList.at(i).y() + 3, 6, 6);
+ painter.setPen(Qt::NoPen);
+ }
+ else{
+ painter.setBrush(Qt::white);
+ painter.drawRect(m_colorAreaList.at(i).x() + 3, m_colorAreaList.at(i).y() + 3, 6, 6);
+ }
+ }
+ }
+}
+
+void Toowidget::mousePressEvent(QMouseEvent *e) {
+ if (e->button() == Qt::LeftButton)
+ {
+ for (int i = 0; i < m_colorList.size(); ++i) {
+ if (m_colorAreaList.at(i).contains(e->pos())) {
+ m_drawColor = m_colorList.at(i);
+ emit colorSelected(m_drawColor);
+ update();
+ break;
+ }
+ }
+ }
+}
+
+void Toowidget::mouseMoveEvent(QMouseEvent *e) {
+ for (int i = 0; i < m_colorList.size(); ++i) {
+ if (m_colorAreaList.at(i).contains(e->pos())) {
+ m_selectColor = m_colorList.at(i);
+ //emit colorSelected(m_drawColor);
+ update();
+ break;
+ }
+ m_selectColor = Qt::gray;
+ update();
+ }
+}
+
+QVector<QRect> Toowidget::handleMask() const {
+ QVector<QRect> areas;
+ for (int i = 0; i < m_colorList.size(); ++i) {
+ QRect *rect = new QRect(102 + i * 22, 9, 12, 12);
+ areas.append(*rect);
+ }
+ return areas;
+}
+
+void Toowidget::updateColor(QColor c)
+{
+ m_drawColor = c;
+ update();
+}
diff --git a/src/widgets/capture/toowidget.h b/src/widgets/capture/toowidget.h
new file mode 100644
index 0000000..694ef96
--- /dev/null
+++ b/src/widgets/capture/toowidget.h
@@ -0,0 +1,55 @@
+// Copyright(c) 2017-2019 Alejandro Sirgo Rica & Contributors
+//
+// This file is part of Flameshot.
+//
+// Flameshot is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Flameshot is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Flameshot. If not, see <http://www.gnu.org/licenses/>.
+
+#pragma once
+
+#include <QWidget>
+#include <QLabel>
+#include <QHBoxLayout>
+
+class Toowidget : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit Toowidget(QColor m_color, QWidget *parent = nullptr);
+
+public slots:
+ void updateColor(QColor c);
+
+signals:
+ void colorSelected(QColor c);
+
+protected:
+ void paintEvent(QPaintEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+
+ QVector<QRect> handleMask() const;
+
+private:
+ int m_colorAreaSize;
+
+ QVector<QRect> m_colorAreaList;
+ QVector<QColor> m_colorList;
+
+ QColor m_uiColor, m_drawColor, m_selectColor;
+
+ bool m_inselection = false;
+
+};
+
+
diff --git a/src/widgets/infowindow.cpp b/src/widgets/infowindow.cpp
index 1e99968..c78a96b 100755
--- a/src/widgets/infowindow.cpp
+++ b/src/widgets/infowindow.cpp
@@ -133,7 +133,7 @@ void InfoWindow::initLabels() {
QLabel *versionTitleLabel = new QLabel(tr("<u><b>Version</b></u>"), this);
versionTitleLabel->setAlignment(Qt::AlignHCenter);
m_layout->addWidget(versionTitleLabel);
- QString versionMsg = "Flameshot " + QStringLiteral(APP_VERSION) + "\nCompiled with Qt "
+ QString versionMsg = "Kiran-Flameshot " + QStringLiteral(APP_VERSION) + "\nCompiled with Qt "
+ QT_VERSION_STR;
QLabel *versionLabel = new QLabel(versionMsg, this);
versionLabel->setAlignment(Qt::AlignHCenter);
diff --git a/textbutton.h b/textbutton.h
index 03bbb23..1dd3a48 100755
--- a/textbutton.h
+++ b/textbutton.h
@@ -35,7 +35,14 @@ public:
addItem(tr("small"));
addItem(tr("medium"));
addItem(tr("large"));
- this->setCurrentIndex(1);
+
+ if(m_thickness = SMALL_SIZE)
+ this->setCurrentIndex(0);
+ else if(m_thickness = MEDIUM_SIZE)
+ this->setCurrentIndex(1);
+ else if(m_thickness = LARGE_SIZE)
+ this->setCurrentIndex(2);
+
setFixedSize(24, 26);
@@ -62,8 +69,8 @@ public slots:
m_thickness = MEDIUM_SIZE;
else if(this->currentIndex() == 2)
m_thickness = LARGE_SIZE;
- printf("index:%d\n",this->currentIndex());
- printf("dididi:%d\n",m_thickness);
+// printf("index:%d\n",this->currentIndex());
+// printf("dididi:%d\n",m_thickness);
emit updateThickness(m_thickness);
}
diff --git a/textbutton.qss b/textbutton.qss
index 5870df9..86f4bfa 100755
--- a/textbutton.qss
+++ b/textbutton.qss
@@ -1,33 +1,120 @@
-QPushButton#TextButton {
- background-color: transparent;
- color: #303030;
- outline: none;
- border: none;
-}
-
-QPushButton#TextButton:hover {
- background-color: rgba(0, 0, 0, 0.05);
- outline: none;
- color: #000000;
- font-size: 12px;
- font-weight: light;
- border: 1px solid transparent;
- border-radius: 4px;
-}
-QPushButton#TextButton:checked:hover {
- background-color: rgba(0, 0, 0, 0.05);
- outline: none;
- color: #2ca7f8;
- font-size: 12px;
- font-weight: light;
- border: 1px solid transparent;
- border-radius: 4px;
-}
-
-QPushButton#TextButton:checked {
- background-color: transparent;
- outline: none;
- color: #2ca7f8;
- font-size: 12px;
- font-weight: light;
+/* 未下拉时QComboBox的样式 */
+QComboBox {
+ border: 1px solid gray; /* 边框 */
+ border-radius: 3px; /* 圆角 */
+ padding: 1px 18px 1px 3px; /* 字体填衬 */
+ color: #000;
+ font: normal normal 15px "Microsoft YaHei";
+ background: transparent;
}
+
+/* 下拉后,整个下拉窗体样式 */
+QComboBox QAbstractItemView {
+ outline: 0px solid gray; /* 选定项的虚框 */
+ border: 1px solid yellow; /* 整个下拉窗体的边框 */
+ color: green;
+ background-color: red; /* 整个下拉窗体的背景色 */
+ selection-background-color: lightgreen; /* 整个下拉窗体被选中项的背景色 */
+}
+
+/* 下拉后,整个下拉窗体每项的样式 */
+QComboBox QAbstractItemView::item {
+ height: 50px; /* 项的高度设置pComboBox->setView(new QListView());后,该项才起作用) */
+}
+
+/* 下拉后,整个下拉窗体越过每项的样式 */
+QComboBox QAbstractItemView::item:hover {
+ color: #FFFFFF;
+ background-color: lightgreen; /* 整个下拉窗体越过每项的背景色 */
+}
+
+/* 下拉后,整个下拉窗体被选择的每项的样式 */
+QComboBox QAbstractItemView::item:selected {
+ color: #FFFFFF;
+ background-color: lightgreen;
+}
+
+/* QComboBox中的垂直滚动条 */
+QComboBox QAbstractScrollArea QScrollBar:vertical {
+ width: 10px;
+ background-color: #d0d2d4; /* 空白区域的背景色 灰色green */
+}
+
+QComboBox QAbstractScrollArea QScrollBar::handle:vertical {
+ border-radius: 5px; /* 圆角 */
+ background: rgb(160,160,160); /* 小方块的背景色深灰lightblue */
+}
+
+QComboBox QAbstractScrollArea QScrollBar::handle:vertical:hover {
+ background: rgb(90, 91, 93); /* 越过小方块的背景色yellow */
+}
+
+/* 设置为可编辑setEditable(true)editable时编辑区域的样式 */
+QComboBox:editable {
+ background: green;
+}
+
+/* 设置为非编辑setEditable(false)!editable时整个QComboBox的样式 */
+QComboBox:!editable {
+ background: blue;
+}
+
+/* 设置为可编辑editable时点击整个QComboBox的样式 */
+QComboBox:editable:on {
+ background: green;
+}
+
+/* 设置为非编辑!editable时点击整个QComboBox的样式 */
+QComboBox:!editable:on {
+ background: blue;
+}
+
+/* 设置为可编辑editable时下拉框的样式 */
+QComboBox::drop-down:editable {
+ background: lightblue;
+}
+
+/* 设置为可编辑editable时点击下拉框的样式 */
+QComboBox::drop-down:editable:on {
+ background: lightgreen;
+}
+
+/* 设置为非编辑!editable时下拉框的样式 */
+QComboBox::drop-down:!editable {
+ background: lightblue;
+}
+
+/* 设置为非编辑!editable时点击下拉框的样式 */
+QComboBox::drop-down:!editable:on {
+ background: lightgreen;
+}
+
+/* 点击QComboBox */
+QComboBox:on {
+}
+
+/* 下拉框样式 */
+QComboBox::drop-down {
+ subcontrol-origin: padding; /* 子控件在父元素中的原点矩形。如果未指定此属性则默认为padding。 */
+ subcontrol-position: top right; /* 下拉框的位置(右上) */
+ width: 15px; /* 下拉框的宽度 */
+
+ border-left-width: 1px; /* 下拉框的左边界线宽度 */
+ border-left-color: darkgray; /* 下拉框的左边界线颜色 */
+ border-left-style: solid; /* 下拉框的左边界线为实线 */
+ border-top-right-radius: 3px; /* 下拉框的右上边界线的圆角半径应和整个QComboBox右上边界线的圆角半径一致 */
+ border-bottom-right-radius: 3px; /* 同上 */
+}
+ /* 越过下拉框样式 */
+
+ QComboBox::drop-down:hover {
+
+   background: yellow;
+
+ }
+/* 下拉箭头样式 */ QComboBox::down-arrow { width: 15px; /* 下拉箭头的宽度建议与下拉框drop-down的宽度一致 */ background: transparent; /* 下拉箭头的的背景色 */ padding: 0px 0px 0px 0px; /* 上内边距、右内边距、下内边距、左内边距 */ image: url(:/images/combobox_arrow_down.png); } /* 点击下拉箭头 */ QComboBox::down-arrow:on { image: url(:/images/combobox_arrow_up.png); /* 显示下拉箭头 */ }
+注意:
+
+QComboBox* pComboBox = new QComboBox(this);
+
+pComboBox->setView(new QListView()); //下拉列表项高才能生效
diff --git a/zoomIndicator.cpp b/zoomIndicator.cpp
index a4a5cb2..434d35b 100755
--- a/zoomIndicator.cpp
+++ b/zoomIndicator.cpp
@@ -34,10 +34,10 @@
#include <QPixmap>
namespace {
-const QSize BACKGROUND_SIZE = QSize(120, 120);
+const QSize BACKGROUND_SIZE = QSize(99, 99);
const int SCALE_VALUE = 4;
-const int IMG_WIDTH = 55;
-const int INDICATOR_WIDTH = 110;
+const int IMG_WIDTH = 46;
+const int INDICATOR_WIDTH = 89;
const int CENTER_RECT_WIDTH = 12;
const int BOTTOM_RECT_HEIGHT = 14;
}
--
2.27.0