implement Checkbox paintEvent
This commit is contained in:
parent
d2e33cc17e
commit
bce8535b16
|
@ -1,10 +1,13 @@
|
|||
#include <QWidget>
|
||||
#include <QPainter>
|
||||
#include <QStylePainter>
|
||||
#include <QStyleOptionButton>
|
||||
#include "checkbox.h"
|
||||
|
||||
Checkbox::Checkbox(QWidget *parent)
|
||||
: QWidget(parent)
|
||||
: QAbstractButton(parent)
|
||||
{
|
||||
setFixedSize(200, 200);
|
||||
}
|
||||
|
||||
Checkbox::~Checkbox()
|
||||
|
@ -13,19 +16,52 @@ Checkbox::~Checkbox()
|
|||
|
||||
void Checkbox::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
QWidget::mousePressEvent(event);
|
||||
QAbstractButton::mousePressEvent(event);
|
||||
}
|
||||
|
||||
void Checkbox::mouseReleaseEvent(QMouseEvent *event)
|
||||
{
|
||||
QWidget::mouseReleaseEvent(event);
|
||||
QAbstractButton::mouseReleaseEvent(event);
|
||||
}
|
||||
|
||||
void Checkbox::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
QPainter painter(this);
|
||||
Q_UNUSED(event)
|
||||
|
||||
painter.drawRect(0, 0, 50, 50);
|
||||
QStylePainter p(this);
|
||||
QStyleOptionButton opt;
|
||||
initStyleOption(&opt);
|
||||
p.drawControl(QStyle::CE_CheckBox, opt);
|
||||
|
||||
QWidget::paintEvent(event);
|
||||
p.drawRect(rect().adjusted(0, 0, -1, -1)); // tmp
|
||||
}
|
||||
|
||||
void Checkbox::initStyleOption(QStyleOptionButton *option) const
|
||||
{
|
||||
if (!option)
|
||||
return;
|
||||
//Q_D(const QCheckBox);
|
||||
option->initFrom(this);
|
||||
/*
|
||||
if (d->down)
|
||||
option->state |= QStyle::State_Sunken;
|
||||
if (d->tristate && d->noChange)
|
||||
option->state |= QStyle::State_NoChange;
|
||||
else
|
||||
option->state |= d->checked ? QStyle::State_On : QStyle::State_Off;
|
||||
*/
|
||||
if (testAttribute(Qt::WA_Hover) && underMouse()) {
|
||||
/*
|
||||
if (d->hovering)
|
||||
option->state |= QStyle::State_MouseOver;
|
||||
else
|
||||
option->state &= ~QStyle::State_MouseOver;
|
||||
*/
|
||||
}
|
||||
option->text = "Label label";
|
||||
/*
|
||||
option->text = d->text;
|
||||
option->icon = d->icon;
|
||||
option->iconSize = iconSize();
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
#ifndef CHECKBOX_H
|
||||
#define CHECKBOX_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QAbstractButton>
|
||||
|
||||
class Checkbox : public QWidget
|
||||
class QStyleOptionButton;
|
||||
|
||||
class Checkbox : public QAbstractButton
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
@ -15,6 +17,8 @@ protected:
|
|||
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
|
||||
void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
|
||||
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
|
||||
|
||||
void initStyleOption(QStyleOptionButton *option) const;
|
||||
};
|
||||
|
||||
#endif // CHECKBOX_H
|
||||
|
|
Loading…
Reference in New Issue