mirror of
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
synced 2025-01-26 22:39:02 +08:00
Added PushButton to test new CDockWidgetSideTab
This commit is contained in:
parent
3a3c3a96d6
commit
cbc43e5e0e
69
src/PushButton.cpp
Normal file
69
src/PushButton.cpp
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
//============================================================================
|
||||||
|
/// \file PushButton.cpp
|
||||||
|
/// \author Uwe Kindler
|
||||||
|
/// \date 18.10.2022
|
||||||
|
/// \brief Implementation of CPushButton
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// INCLUDES
|
||||||
|
//============================================================================
|
||||||
|
#include "PushButton.h"
|
||||||
|
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QStyleOptionButton>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QStylePainter>
|
||||||
|
|
||||||
|
|
||||||
|
namespace ads
|
||||||
|
{
|
||||||
|
QSize CPushButton::sizeHint() const
|
||||||
|
{
|
||||||
|
QSize sh = QPushButton::sizeHint();
|
||||||
|
|
||||||
|
if (m_Orientation != CPushButton::Horizontal)
|
||||||
|
{
|
||||||
|
sh.transpose();
|
||||||
|
}
|
||||||
|
|
||||||
|
return sh;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CPushButton::paintEvent(QPaintEvent *event)
|
||||||
|
{
|
||||||
|
Q_UNUSED(event);
|
||||||
|
|
||||||
|
QStylePainter painter(this);
|
||||||
|
QStyleOptionButton option;
|
||||||
|
initStyleOption(&option);
|
||||||
|
|
||||||
|
if (m_Orientation == CPushButton::VerticalTopToBottom)
|
||||||
|
{
|
||||||
|
painter.rotate(90);
|
||||||
|
painter.translate(0, -1 * width());
|
||||||
|
option.rect = option.rect.transposed();
|
||||||
|
}
|
||||||
|
else if (m_Orientation == CPushButton::VerticalBottomToTop)
|
||||||
|
{
|
||||||
|
painter.rotate(-90);
|
||||||
|
painter.translate(-1 * height(), 0);
|
||||||
|
option.rect = option.rect.transposed();
|
||||||
|
}
|
||||||
|
|
||||||
|
painter.drawControl(QStyle::CE_PushButton, option);
|
||||||
|
}
|
||||||
|
|
||||||
|
CPushButton::Orientation CPushButton::orientation() const
|
||||||
|
{
|
||||||
|
return m_Orientation;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CPushButton::setOrientation(Orientation &orientation)
|
||||||
|
{
|
||||||
|
m_Orientation = orientation;
|
||||||
|
}
|
||||||
|
} // namespace ads
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
// EOF PushButton.cpp
|
49
src/PushButton.h
Normal file
49
src/PushButton.h
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#ifndef PushButtonH
|
||||||
|
#define PushButtonH
|
||||||
|
//============================================================================
|
||||||
|
/// \file PushButton.h
|
||||||
|
/// \author Uwe Kindler
|
||||||
|
/// \date 18.10.2022
|
||||||
|
/// \brief Declaration of CPushButton
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
// INCLUDES
|
||||||
|
//============================================================================
|
||||||
|
#include <QPushButton>
|
||||||
|
|
||||||
|
namespace ads
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ADS specific push button class
|
||||||
|
*/
|
||||||
|
class CPushButton : public QPushButton
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
enum Orientation {
|
||||||
|
Horizontal,
|
||||||
|
VerticalTopToBottom,
|
||||||
|
VerticalBottomToTop
|
||||||
|
};
|
||||||
|
|
||||||
|
using QPushButton::QPushButton;
|
||||||
|
|
||||||
|
virtual QSize sizeHint() const override;
|
||||||
|
|
||||||
|
Orientation orientation() const;
|
||||||
|
void setOrientation(Orientation &orientation);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void paintEvent(QPaintEvent *event) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Orientation m_Orientation = Horizontal;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace ads
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif // PushButtonH
|
||||||
|
|
@ -50,7 +50,8 @@ HEADERS += \
|
|||||||
DockFocusController.h \
|
DockFocusController.h \
|
||||||
AutoHideDockContainer.h \
|
AutoHideDockContainer.h \
|
||||||
SideTabBar.h \
|
SideTabBar.h \
|
||||||
DockWidgetSideTab.h
|
DockWidgetSideTab.h \
|
||||||
|
PushButton.h
|
||||||
|
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
@ -73,7 +74,8 @@ SOURCES += \
|
|||||||
DockFocusController.cpp \
|
DockFocusController.cpp \
|
||||||
AutoHideDockContainer.cpp \
|
AutoHideDockContainer.cpp \
|
||||||
SideTabBar.cpp \
|
SideTabBar.cpp \
|
||||||
DockWidgetSideTab.cpp
|
DockWidgetSideTab.cpp \
|
||||||
|
PushButton.cpp
|
||||||
|
|
||||||
|
|
||||||
unix:!macx {
|
unix:!macx {
|
||||||
|
Loading…
Reference in New Issue
Block a user