DtkWidget 5.6.0.2
DTK Widget module
dsplitscreen_p.h
1// SPDX-FileCopyrightText: 2021 - 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DSPLITSCREEN_P_H
6#define DSPLITSCREEN_P_H
7
8#include <dtkwidget_global.h>
9
10#include <DArrowRectangle>
11#include <DGuiApplicationHelper>
12#include <DIconButton>
13
14DGUI_USE_NAMESPACE
15DWIDGET_BEGIN_NAMESPACE
16
18{
19 Q_OBJECT
20public:
21 explicit DSplitScreenButton(DStyle::StandardPixmap sp, QWidget *parent = nullptr);
22
23protected:
24 void initStyleOption(DStyleOptionButton *option) const;
25};
26
28{
29 Q_OBJECT
30public:
31 enum SplitScreenMode {
32 SplitLeftHalf = 1,
33 SplitRightHalf = 2,
34 SplitFullScreen = 15
35 };
36 Q_ENUM(SplitScreenMode)
37
38 explicit DSplitScreenWidget(DSplitScreenWidget::FloatMode mode, QWidget *parent = nullptr);
39
40 void hide();
41 void hideImmediately();
42 void updateMaximizeButtonIcon(bool isMaximized);
43 void setButtonsEnable(bool enable);
44
45Q_SIGNALS:
46 void maximizeButtonClicked();
47 void leftSplitScreenButtonClicked();
48 void rightSplitScreenButtonClicked();
49
50private Q_SLOTS:
51 void onThemeTypeChanged(DGuiApplicationHelper::ColorType ct);
52
53protected:
54 void init();
55 void disabledByScreenGeometryAndWindowSize(QWidgetList w);
56 bool eventFilter(QObject *o, QEvent *e) override;
57 void showEvent(QShowEvent *e) override;
58 void timerEvent(QTimerEvent *e) override;
59
60private:
61 DSplitScreenButton *leftSplitButton = nullptr;
62 DSplitScreenButton *rightSplitButton = nullptr;
63 DSplitScreenButton *maximizeButton = nullptr;
64
65 QWidget *contentWidget = nullptr;
66 QBasicTimer hideTimer;
67 DArrowRectangle::FloatMode floatMode;
68 bool isMaxButtonPressAndHold = false;
69
70 friend class DTitlebarPrivate;
71 friend class DTitlebar;
72};
73
74DWIDGET_END_NAMESPACE
75#endif // DSPLITSCREEN_P_H
DArrowRectangle 提供了可以在四个边中的任意一个边显示箭头的矩形控件.
Definition: darrowrectangle.h:29
Definition: diconbutton.h:24
Definition: dsplitscreen_p.h:18
Definition: dsplitscreen_p.h:28
Dtk 样式统一的按钮样式配置.
Definition: dstyleoption.h:55
Definition: dtitlebar.cpp:52
The DTitlebar class is an universal title bar on the top of windows.
Definition: dtitlebar.h:20