#pragma once #include "lts_base.h" #include "lts_widgets_export.h" #include #include #include namespace LtsWidgets { class LtsDialogHelper; class LtsTabBar; class LTSWIDGETS_EXPORT LtsTabWidget : public QTabWidget { Q_OBJECT public: explicit LtsTabWidget(QWidget *parent = nullptr, bool isSecondary = false); ~LtsTabWidget(); void setActuatorTabStyle(bool enable); void clearAll(); void aboutToClose(); LtsTabBar *tabBar(); void setTabBar(LtsTabBar *tabbar); bool focusTab(const QString &menuGroup, const QString &identifier); void setSubTabsVisible(bool visible); QWidget *getWidget(const QString &menuGroup, const QString &identifier); static bool hasUnsavedChanges(LtsTabWidget *tabWidget); signals: void signalCheckTabBarVisibility(); public slots: void addTab(const QString &menuGroup, const QString &identifier, QWidget *widget, bool setClosable = true, bool focusNewTab = true); bool removeWidget(QWidget * widget); private slots: void onRemoveTab(QObject *object); void onCheckTabBarVisibility(); void slotTabCloseRequested(int index); void slotCurrentChanged(int newIdx); void slotMaximizeButtonClicked(); private: void addWidget(const QString &fullName, QWidget *widget, bool setClosable, bool focusNewTab = true); QWidget *getWidget(const QString &fullName); bool focusWidget(const QString &fullName); void slotWindowTitleChanged(const QString &title); void closeRequestTabWidget(LtsTabWidget *tabWidget); QPoint startPos; LtsTabBar *m_tabbar = nullptr; QPalette m_palette; QMap m_tabMap; bool m_hasSubTabs; bool m_isSecondary; QByteArray m_mainSplitterState; }; class CloseButton : public QAbstractButton { Q_OBJECT public: using QAbstractButton::QAbstractButton; void setFontColor(const QColor &fontColor) { m_fontColor = fontColor; } QRectF cross() const; QLineF line() const; protected: void mousePressEvent(QMouseEvent *e) override; void mouseReleaseEvent(QMouseEvent *e) override; void paintEvent(QPaintEvent *e) override; QSize sizeHint() const override; private: QColor m_fontColor; bool m_isPressed = false; }; }