diff --git a/examples/custom_titlebar/main.cpp b/examples/custom_titlebar/main.cpp index dd631561..354891e2 100644 --- a/examples/custom_titlebar/main.cpp +++ b/examples/custom_titlebar/main.cpp @@ -22,6 +22,7 @@ #include "Config.h" #include "TitleBar_p.h" #include "DockWidget.h" +#include "SeparatorWidget_p.h" #include #include @@ -62,6 +63,22 @@ public: } }; +// Inheriting from SeparatorWidget instead of Separator as it handles moving and mouse cursor changing +class MySeparator : public SeparatorWidget +{ +public: + explicit MySeparator(Anchor *anchor, QWidget *parent = nullptr) + : SeparatorWidget(anchor, parent) + { + } + + void paintEvent(QPaintEvent *) override + { + QPainter p(this); + p.fillRect(rect(), isStatic() ? Qt::black : Qt::cyan); + } +}; + class CustomWidgetFactory : public DefaultWidgetFactory { public: @@ -74,6 +91,11 @@ public: { return new MyTitleBar(fw); } + + Separator * createSeparator(Anchor *anchor, QWidget *parent = nullptr) const override + { + return new MySeparator(anchor, parent); + } }; DockWidgetBase *createDockWidget(const QString &name) @@ -90,13 +112,15 @@ int main(int argc, char **argv) { QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); - Config::self().setFrameworkWidgetFactory(new CustomWidgetFactory()); QApplication app(argc, argv); + + Config::self().setFrameworkWidgetFactory(new CustomWidgetFactory()); // Sets our custom factory + Config::self().setSeparatorThickness(10, /*static=*/ false); + app.setOrganizationName(QStringLiteral("KDAB")); app.setApplicationName(QStringLiteral("Test app")); - qApp->setStyle(QStyleFactory::create(QStringLiteral("Fusion"))); MainWindow mainWindow(QStringLiteral("myMainWindow"), MainWindowOption_None); mainWindow.resize(1000, 800); diff --git a/src/multisplitter/Separator_p.h b/src/multisplitter/Separator_p.h index d3098c0d..42bc13f2 100644 --- a/src/multisplitter/Separator_p.h +++ b/src/multisplitter/Separator_p.h @@ -21,13 +21,15 @@ #ifndef KD_MULTISPLITTER_SEPARATOR_P_H #define KD_MULTISPLITTER_SEPARATOR_P_H +#include "docks_export.h" + #include #include namespace KDDockWidgets { class Anchor; -class Separator : public QWidget +class DOCKS_EXPORT Separator : public QWidget { Q_OBJECT public: diff --git a/src/widgets/SeparatorWidget_p.h b/src/widgets/SeparatorWidget_p.h index 3aeec225..230ed8ec 100644 --- a/src/widgets/SeparatorWidget_p.h +++ b/src/widgets/SeparatorWidget_p.h @@ -25,7 +25,7 @@ namespace KDDockWidgets { -class SeparatorWidget : public Separator +class DOCKS_EXPORT SeparatorWidget : public Separator { Q_OBJECT public: