kiran-flameshot/0001-Optimize-toolbar-add-toolbar-function-optimize-line--9c2875ef.patch
2021-01-15 09:58:11 +08:00

2031 lines
68 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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