feat: v1.4.3 成功创建一个自定义的控件对象(还没有对自定义控件进行绘画)
This commit is contained in:
parent
adeb9cdeb1
commit
97d8b1d9e4
@ -37,6 +37,11 @@ class ExMyStyle : public QCommonStyle
|
||||
public:
|
||||
ExMyStyle();
|
||||
|
||||
// enum ControlElement {
|
||||
// CE_SwitchButton = QStyle::CE_CustomBase + 1,
|
||||
// CE_CustomBase = QStyle::CE_CustomBase + 0xf00000
|
||||
// };
|
||||
|
||||
// QStyle interface
|
||||
public:
|
||||
virtual void polish(QWidget *widget) override;
|
||||
|
@ -80,4 +80,13 @@ void Example::init()
|
||||
connect(btn, &QPushButton::clicked, this, [=](){
|
||||
qApp->setStyle(new ExMyStyle());
|
||||
});
|
||||
|
||||
ExSwitchButton* switchBtn = new ExSwitchButton();
|
||||
switchBtn->move(300, 300);
|
||||
// switchBtn->move(700, 500);
|
||||
switchBtn->resize(200, 200);
|
||||
switchBtn->setText("switchBtn");
|
||||
switchBtn->setParent(this);
|
||||
switchBtn->show();
|
||||
qDebug()<<"----03-----------------"<<switchBtn->rect();
|
||||
}
|
||||
|
@ -22,6 +22,8 @@
|
||||
#include "ExSwitchButton.h"
|
||||
#include "ExSwitchButton_p.h"
|
||||
#include <QDebug>
|
||||
#include <QPainter>
|
||||
#include "ExMyStyle.h"
|
||||
|
||||
EXWIDGET_BEGIN_NAMESPACE
|
||||
|
||||
@ -31,7 +33,7 @@ EXWIDGET_BEGIN_NAMESPACE
|
||||
*/
|
||||
ExSwitchButtonPrivate::ExSwitchButtonPrivate(/*ExSwitchButton *qq*/)
|
||||
{
|
||||
|
||||
init();
|
||||
}
|
||||
|
||||
ExSwitchButtonPrivate::~ExSwitchButtonPrivate()
|
||||
@ -51,6 +53,16 @@ void ExSwitchButtonPrivate::init()
|
||||
q->onChange(true);
|
||||
}
|
||||
|
||||
ExSwitchButton::ExSwitchButton()
|
||||
{
|
||||
Q_D(ExSwitchButton);
|
||||
}
|
||||
|
||||
ExSwitchButton::~ExSwitchButton()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void ExSwitchButton::onChange(bool)
|
||||
{
|
||||
Q_D(ExSwitchButton);
|
||||
@ -60,5 +72,34 @@ void ExSwitchButton::onChange(bool)
|
||||
qDebug()<<"------01-----ExSwitchButton::onChange(bool):"<<d->m_checked;
|
||||
}
|
||||
|
||||
void ExSwitchButton::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
Q_UNUSED(event);
|
||||
|
||||
QPainter painter(this);
|
||||
QStyleOptionButton opt;
|
||||
initStyleOption(&opt);
|
||||
|
||||
ExMyStyle MyStyle;
|
||||
// MyStyle.drawControl(ExMyStyle::CE_Sw);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void ExSwitchButton::initStyleOption(QStyleOptionButton *option) const
|
||||
{
|
||||
if (!option)
|
||||
return;
|
||||
|
||||
option->init(this); //QStyleOption 对象进行初始化(其中属性很多,整体初始化,然后局部进行参数修改)
|
||||
option->initFrom(this);
|
||||
|
||||
if (isChecked()) {
|
||||
option->state |= QStyle::State_On;
|
||||
} else {
|
||||
option->state |= QStyle::State_Off;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
EXWIDGET_END_NAMESPACE
|
||||
|
@ -26,6 +26,8 @@
|
||||
#include <QtGlobal>
|
||||
|
||||
#include <QAbstractButton>
|
||||
#include <QStyleOption>
|
||||
//#include <QStyleOptionButton>
|
||||
|
||||
EXWIDGET_BEGIN_NAMESPACE
|
||||
|
||||
@ -41,6 +43,12 @@ private slots:
|
||||
|
||||
private:
|
||||
Q_DECLARE_PRIVATE(ExSwitchButton)
|
||||
|
||||
// QWidget interface
|
||||
protected:
|
||||
virtual void paintEvent(QPaintEvent *event) override; //必须重载的纯虚函数
|
||||
void initStyleOption(QStyleOptionButton* option) const;
|
||||
|
||||
};
|
||||
|
||||
EXWIDGET_END_NAMESPACE
|
||||
|
@ -43,6 +43,8 @@ public:
|
||||
explicit ExSwitchButtonPrivate();
|
||||
~ExSwitchButtonPrivate();
|
||||
|
||||
// virtual ~QObjectData();
|
||||
|
||||
void init();
|
||||
|
||||
public:
|
||||
|
Loading…
Reference in New Issue
Block a user