diff --git a/src/fastApp/FastAppItem.cpp b/src/fastApp/FastAppItem.cpp index 4a57616..7569aef 100644 --- a/src/fastApp/FastAppItem.cpp +++ b/src/fastApp/FastAppItem.cpp @@ -165,8 +165,32 @@ void FastAppItem::paintEvent(QPaintEvent *event) { // 绘制图标框 - QRect imageBorderRect = rect().marginsRemoved(QMargins(25, 10, 25, 40)); + // painter.setPen(Qt::red); + QRect imageBorderRect = rect().marginsRemoved(QMargins(25, 25, 25, 25)); painter.drawPixmap(imageBorderRect, QPixmap(":/bilibiliData.png")); + // painter.drawRoundedRect(imageBorderRect, 5, 5); + + // 绘制类型 + + painter.setBrush(Qt::white); + painter.setPen(Qt::NoPen); + QRect appTypeRect = QRect(rect().topLeft() + QPoint(8, 8), QSize(30, 15)); + painter.drawRoundedRect(appTypeRect, 5, 5); + + { + // 绘制类型文字 + painter.setPen(Qt::black); + QFont font; + font.setPixelSize(10); + painter.setFont(font); + QTextOption titleTextOption; + QString text = "DBUS"; + titleTextOption.setAlignment(Qt::AlignCenter); + titleTextOption.setWrapMode(QTextOption::WrapAnywhere); + painter.drawText(appTypeRect, text, titleTextOption); + } + + // 绘制文字部分 painter.setPen(Qt::black); @@ -174,8 +198,8 @@ void FastAppItem::paintEvent(QPaintEvent *event) { font.setPixelSize(12); painter.setFont(font); QTextOption titleTextOption; - QString text = "腾讯QQ"; - QRect titleRect = rect().marginsRemoved(QMargins(5,70,5,5)); + QString text = "打开系统代理"; + QRect titleRect = rect().marginsRemoved(QMargins(5,80,5,5)); titleTextOption.setAlignment(Qt::AlignCenter); titleTextOption.setWrapMode(QTextOption::WrapAnywhere); painter.drawText(titleRect, text, titleTextOption); diff --git a/src/fastApp/FlowLayoutWidget.cpp b/src/fastApp/FlowLayoutWidget.cpp new file mode 100644 index 0000000..5c6f1f3 --- /dev/null +++ b/src/fastApp/FlowLayoutWidget.cpp @@ -0,0 +1,50 @@ +#include "FlowLayoutWidget.h" +#include +#include + +FlowLayoutWidget::FlowLayoutWidget(QWidget *parent) +:QScrollArea(parent) +,m_contentLayout(new DFlowLayout()) +,m_contentWidget(new QWidget()) +,m_mainLayout(new QHBoxLayout()) +,m_mainWidget(new QWidget()) +{ + initUI(); +} + +void FlowLayoutWidget::initUI() +{ + // setAutoFillBackground(true); + m_mainLayout->setAlignment(Qt::AlignHCenter); + + m_mainLayout->addWidget(m_contentWidget); + + m_contentWidget->setLayout(m_contentLayout); + + m_contentLayout->setHorizontalSpacing(10); + m_contentLayout->setVerticalSpacing(10); + + m_mainWidget->setLayout(m_mainLayout); + + // m_mainWidget->setAttribute(Qt::WA_TranslucentBackground); + setWidget(m_mainWidget); + setAttribute(Qt::WA_TranslucentBackground); + setAttribute(Qt::WA_StyledBackground); + + setStyleSheet("*{background-color: transparent;}"); +} + +void FlowLayoutWidget::addItem(QWidget *item) +{ + m_contentLayout->addWidget(item); +} + +void FlowLayoutWidget::resizeEvent(QResizeEvent *event) +{ + int maxHorCount = (event->size().width() - m_contentLayout->horizontalSpacing()) / (m_itemWidth + m_contentLayout->horizontalSpacing()); + int curContentWidth = maxHorCount * m_itemWidth + (maxHorCount + 1) * m_contentLayout->horizontalSpacing(); + m_contentWidget->setFixedWidth(curContentWidth); + m_contentWidget->setFixedHeight(m_contentLayout->heightForWidth(curContentWidth)); + m_mainWidget->setFixedSize(event->size().width(), m_contentWidget->height()); + QScrollArea::resizeEvent(event); +} \ No newline at end of file diff --git a/src/fastApp/FlowLayoutWidget.h b/src/fastApp/FlowLayoutWidget.h new file mode 100644 index 0000000..68efaef --- /dev/null +++ b/src/fastApp/FlowLayoutWidget.h @@ -0,0 +1,30 @@ +#ifndef FLOWLAYOUTWIDGET_H +#define FLOWLAYOUTWIDGET_H + +#include +#include +#include + +DWIDGET_USE_NAMESPACE + +class FlowLayoutWidget : public QScrollArea +{ + Q_OBJECT +public: + explicit FlowLayoutWidget(QWidget *parent = nullptr); + void addItem(QWidget *item); + void initUI(); + void setItemWidth(int width); + +protected: + void resizeEvent(QResizeEvent *event) override; + +private: + DFlowLayout *m_contentLayout = nullptr; + QWidget *m_contentWidget = nullptr; + QWidget *m_mainWidget = nullptr; + QHBoxLayout *m_mainLayout = nullptr; + int m_itemWidth = 110; +}; + +#endif \ No newline at end of file diff --git a/src/fastApp/fastAppWidget.cpp b/src/fastApp/fastAppWidget.cpp index 4a68b75..495633a 100644 --- a/src/fastApp/fastAppWidget.cpp +++ b/src/fastApp/fastAppWidget.cpp @@ -8,32 +8,78 @@ #include #include "FastAppItem.h" -FastAppWidget::FastAppWidget(QWidget *parent) : QWidget(parent){ - auto *mainLayout = new QHBoxLayout(this); - m_fastAppItems.append(new FastAppItem); - m_fastAppItems.append(new FastAppItem); - m_fastAppItems.append(new FastAppItem); - m_fastAppItems.append(new FastAppItem); +FastAppWidget::FastAppWidget(QWidget *parent) +:QWidget(parent) +,m_editFastAppBtn(new DFloatingButton(DStyle::SP_EditElement, this)) +,m_addFastAppBtn(new DFloatingButton(DStyle::SP_IncreaseElement, this)) +{ + auto *mainLayout = new QVBoxLayout(this); + m_mainWidget = new FlowLayoutWidget(this); + for(int i = 0; i < 100; i++) { + m_fastAppItems.append(new FastAppItem); + } + + for(auto item : m_fastAppItems) { - mainLayout->addWidget(item); + m_mainWidget->addItem(item); } - editBtn = new DSuggestButton(); - mainLayout->addWidget(editBtn); - - connect(editBtn, &QPushButton::clicked, this, [this](){ - static bool isShow = false; - if(isShow) { - for(auto item : m_fastAppItems) { - item->hideOperatorBtn(); - } - isShow = false; + + mainLayout->addWidget(m_mainWidget); + + // mainLayout->addLayout(main1); + // mainLayout->addLayout(main2); + // mainLayout->addLayout(main3); + // mainLayout->addWidget(m_editFastAppBtn); + // mainLayout->addWidget(m_addFastAppBtn); + + m_editFastAppBtn->raise(); + m_addFastAppBtn->raise(); + + connect(m_editFastAppBtn, &DFloatingButton::clicked, this, &FastAppWidget::onEditFastAppBtnClicked); + connect(m_addFastAppBtn, &DFloatingButton::clicked, this, &FastAppWidget::onAddFastAppBtnClicked); + +} + + +void FastAppWidget::resizeEvent(QResizeEvent *event) +{ + m_editFastAppBtn->move(this->geometry().width() - m_editFastAppBtn->width() - 10, this->geometry().height() - m_editFastAppBtn->height() - 10); + m_addFastAppBtn->move(this->geometry().width() - m_editFastAppBtn->width() * 2 - 20, this->geometry().height() - m_editFastAppBtn->height() - 10); + QWidget::resizeEvent(event); +} + +void FastAppWidget::showEvent(QShowEvent *event) +{ + static bool isFirstShow = true; + QWidget::showEvent(event); + if(!isFirstShow) { + return; + } + isFirstShow = false; + m_editFastAppBtn->move(this->geometry().width() - m_editFastAppBtn->width() - 10, this->geometry().height() - m_editFastAppBtn->height() - 10); + m_addFastAppBtn->move(this->geometry().width() - m_editFastAppBtn->width() * 2 - 20, this->geometry().height() - m_editFastAppBtn->height() - 10); +} + +void FastAppWidget::onEditFastAppBtnClicked() +{ + static bool isShow = false; + if(isShow) { + for(auto item : m_fastAppItems) { + item->hideOperatorBtn(); } - else { - for(auto item : m_fastAppItems) { - item->showOperatorBtn(); - } - isShow = true; + m_editFastAppBtn->setIcon(DStyle::StandardPixmap::SP_EditElement); + isShow = false; + } + else { + for(auto item : m_fastAppItems) { + item->showOperatorBtn(); } - - }); + m_editFastAppBtn->setIcon(DStyle::StandardPixmap::SP_MarkElement); + isShow = true; + } } + +void FastAppWidget::onAddFastAppBtnClicked() +{ + +} \ No newline at end of file diff --git a/src/fastApp/fastAppWidget.h b/src/fastApp/fastAppWidget.h index e34fe84..1d67c8c 100644 --- a/src/fastApp/fastAppWidget.h +++ b/src/fastApp/fastAppWidget.h @@ -10,15 +10,27 @@ #include #include #include +#include +#include "FlowLayoutWidget.h" class FastAppWidget : public QWidget{ Q_OBJECT public: explicit FastAppWidget(QWidget *parent = nullptr); +protected: + void resizeEvent(QResizeEvent *event) override; + void showEvent(QShowEvent *event) override; + +private: + void onAddFastAppBtnClicked(); + void onEditFastAppBtnClicked(); + private: QVector m_fastAppItems; - DSuggestButton *editBtn; + DFloatingButton *m_editFastAppBtn; + DFloatingButton *m_addFastAppBtn; + FlowLayoutWidget *m_mainWidget = nullptr; }; diff --git a/src/main.cpp b/src/main.cpp index 328cc7c..95aa819 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -19,7 +19,7 @@ int main(int argc, char *argv[]) globalSetting::getInstance(&a); // 创建设置类对象 MainWindow w; - w.resize(650,500); + w.resize(700,500); // 移动到中间位置 QDesktopWidget *desktop=QApplication::desktop();