feat: v1.4 添加和使用一个自定义控件类
This commit is contained in:
parent
90c8883162
commit
76f5be9614
70
QtCustomStyleEx/MyWidget/ExSwitchButton.cpp
Normal file
70
QtCustomStyleEx/MyWidget/ExSwitchButton.cpp
Normal file
@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright (C) 2019 ~ 2019 touwoyimuli. All rights reserved.
|
||||
*
|
||||
* Author: touwoyimuli <touwoyimuli@gmai.com>
|
||||
*
|
||||
* github: https://github.com/touwoyimuli
|
||||
* blogs: https://touwoyimuli.github.io/
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://touwoyimuli.github.io/>.
|
||||
*/
|
||||
#include "ExSwitchButton.h"
|
||||
//#include "qglobal.h"
|
||||
|
||||
EXWIDGET_BEGIN_NAMESPACE
|
||||
|
||||
//xxxPrivate class 会在 xxx.cpp 里面来实现
|
||||
/*!
|
||||
* \~chinese \brief ExSwitchButtonPrivate 的构造函数
|
||||
*/
|
||||
ExSwitchButtonPrivate::ExSwitchButtonPrivate(ExSwitchButton *qq)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
ExSwitchButtonPrivate::~ExSwitchButtonPrivate()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void ExSwitchButtonPrivate::init()
|
||||
{
|
||||
m_checked = false; //xxxxPrivate 自带的变量
|
||||
Q_Q(ExSwitchButton); //Q_Q 可以在 xxxxPrivate 里面调用 xxxx 的方法和变量
|
||||
|
||||
q->setObjectName("ExSwitchButtonPrivate");
|
||||
q->setCheckable(true);
|
||||
q->connect(q, SIGNAL(toggled(bool)), q, SLOT(onChange(bool)));
|
||||
|
||||
}
|
||||
|
||||
ExSwitchButtonPrivate::ExSwitchButton()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void ExSwitchButton::onChange(bool)
|
||||
{
|
||||
Q_D(ExSwitchButton);
|
||||
|
||||
d->m_checked = (!d->m_checked);
|
||||
|
||||
qDebug()<<"------01-----ExSwitchButton::onChange(bool):"<<d->m_checked;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
EXWIDGET_END_NAMESPACE
|
44
QtCustomStyleEx/MyWidget/ExSwitchButton.h
Normal file
44
QtCustomStyleEx/MyWidget/ExSwitchButton.h
Normal file
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (C) 2019 ~ 2019 touwoyimuli. All rights reserved.
|
||||
*
|
||||
* Author: touwoyimuli <touwoyimuli@gmai.com>
|
||||
*
|
||||
* github: https://github.com/touwoyimuli
|
||||
* blogs: https://touwoyimuli.github.io/
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://touwoyimuli.github.io/>.
|
||||
*/
|
||||
#ifndef EXSWITCHBUTTON_H
|
||||
#define EXSWITCHBUTTON_H
|
||||
|
||||
#include "ExMyGlobal.h"
|
||||
#include "ExSwitchButton_p.h"
|
||||
|
||||
#include <QAbstractButton>
|
||||
|
||||
EXWIDGET_BEGIN_NAMESPACE
|
||||
|
||||
class ExSwitchButton : public QAbstractButton
|
||||
{
|
||||
public:
|
||||
explicit ExSwitchButton();
|
||||
~ExSwitchButton();
|
||||
|
||||
private slots:
|
||||
void onChange(bool);
|
||||
};
|
||||
|
||||
EXWIDGET_END_NAMESPACE
|
||||
|
||||
#endif
|
51
QtCustomStyleEx/MyWidget/ExSwitchButton_p.h
Normal file
51
QtCustomStyleEx/MyWidget/ExSwitchButton_p.h
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (C) 2019 ~ 2019 touwoyimuli. All rights reserved.
|
||||
*
|
||||
* Author: touwoyimuli <touwoyimuli@gmai.com>
|
||||
*
|
||||
* github: https://github.com/touwoyimuli
|
||||
* blogs: https://touwoyimuli.github.io/
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://touwoyimuli.github.io/>.
|
||||
*/
|
||||
#ifndef EXSWITCHBUTTON_P_H
|
||||
#define EXSWITCHBUTTON_P_H
|
||||
|
||||
#include "ExMyGlobal.h"
|
||||
#include <QWidget>
|
||||
|
||||
EXWIDGET_BEGIN_NAMESPACE
|
||||
|
||||
/*!
|
||||
* \~chinese \class ExSwitchButtonPrivate
|
||||
* \~chinese \brief ExSwitchButton 类的数据类, 便于实现源码/二进制兼容, 通常继承于 “自定义_Private” 的类
|
||||
* \~chinese \sa Qt 自带的 QPushButtonPrivate, QPushButton 实现
|
||||
*/
|
||||
|
||||
class ExSwitchButton;
|
||||
class ExSwitchButtonPrivate //自定义控件通常继承于 QObjectPrivate 之类的
|
||||
{
|
||||
public:
|
||||
ExSwitchButtonPrivate(ExSwitchButton *qq);
|
||||
~ExSwitchButtonPrivate();
|
||||
|
||||
void init();
|
||||
|
||||
public:
|
||||
bool m_checked; //switch 是否处于开启状态
|
||||
};
|
||||
|
||||
EXWIDGET_END_NAMESPACE
|
||||
|
||||
#endif
|
@ -27,12 +27,15 @@ CONFIG += c++11
|
||||
SOURCES += \
|
||||
main.cpp \
|
||||
Example.cpp \
|
||||
ExMyStyle.cpp
|
||||
ExMyStyle.cpp \
|
||||
MyWidget/ExSwitchButton.cpp
|
||||
|
||||
HEADERS += \
|
||||
Example.h \
|
||||
ExMyStyle.h \
|
||||
ExMyGlobal.h
|
||||
ExMyGlobal.h \
|
||||
MyWidget/ExSwitchButton.h \
|
||||
MyWidget/ExSwitchButton_p.h
|
||||
|
||||
|
||||
# Default rules for deployment.
|
||||
|
Loading…
Reference in New Issue
Block a user