From e34f4141a159c62aeb8447db1f4c772304036311 Mon Sep 17 00:00:00 2001 From: Serge Ziryukin Date: Tue, 13 Apr 2010 19:10:00 +0300 Subject: [PATCH] custom buttons --- colorflood/src/CMakeLists.txt | 2 ++ colorflood/src/colorbutton.cpp | 34 ++++++++++++++++++++++++++++++++++ colorflood/src/colorbutton.hpp | 33 +++++++++++++++++++++++++++++++++ colorflood/src/colorbuttons.cpp | 16 +++++----------- 4 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 colorflood/src/colorbutton.cpp create mode 100644 colorflood/src/colorbutton.hpp diff --git a/colorflood/src/CMakeLists.txt b/colorflood/src/CMakeLists.txt index 265ea9f..a73889e 100644 --- a/colorflood/src/CMakeLists.txt +++ b/colorflood/src/CMakeLists.txt @@ -10,6 +10,7 @@ # GNU General Public License for more details. set(src + colorbutton.cpp colorbuttons.cpp colorscheme.cpp field.cpp @@ -19,6 +20,7 @@ set(src ) set(moc + colorbutton.hpp colorbuttons.hpp field.hpp #fullscreenexitbutton.hpp diff --git a/colorflood/src/colorbutton.cpp b/colorflood/src/colorbutton.cpp new file mode 100644 index 0000000..81a69fd --- /dev/null +++ b/colorflood/src/colorbutton.cpp @@ -0,0 +1,34 @@ +/* + Copyright 2010 Serge Ziryukin + + 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; version 2 of the License. + + 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. +*/ + +#include +#include "colorbutton.hpp" +#include "colorscheme.hpp" + +ColorButton::ColorButton (QWidget *parent, int brush) + : QPushButton(parent), + brush(brush) +{ + setFixedSize(64, 64); +} + +void ColorButton::paintEvent (QPaintEvent * /* event */) +{ + QPainter painter; + painter.begin(this); + + const QVector &scheme = ColorScheme::instance().getScheme(); + painter.fillRect(0, 0, 64, 64, scheme.at(brush)); + + painter.end(); +} diff --git a/colorflood/src/colorbutton.hpp b/colorflood/src/colorbutton.hpp new file mode 100644 index 0000000..4058fcc --- /dev/null +++ b/colorflood/src/colorbutton.hpp @@ -0,0 +1,33 @@ +/* + Copyright 2010 Serge Ziryukin + + 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; version 2 of the License. + + 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. +*/ + +#ifndef _COLORBUTTON_HPP +#define _COLORBUTTON_HPP + +#include + +class ColorButton : public QPushButton +{ + Q_OBJECT; + +public: + ColorButton (QWidget *parent, int brush); + +private: + const int brush; + +protected: + void paintEvent (QPaintEvent *event); +}; + +#endif // !_COLORBUTTON_HPP diff --git a/colorflood/src/colorbuttons.cpp b/colorflood/src/colorbuttons.cpp index d8275f6..1d46bf1 100644 --- a/colorflood/src/colorbuttons.cpp +++ b/colorflood/src/colorbuttons.cpp @@ -15,9 +15,10 @@ #include #include #include -#include +#include #include "colorbuttons.hpp" #include "colorscheme.hpp" +#include "colorbutton.hpp" ColorButtons::ColorButtons (QWidget *parent) : QGroupBox(parent) @@ -25,19 +26,12 @@ ColorButtons::ColorButtons (QWidget *parent) Q_ASSERT(parent); const QVector &scheme = ColorScheme::instance().getScheme(); - QVBoxLayout *layout = new QVBoxLayout; + QGridLayout *layout = new QGridLayout; for (int i = 0; i < scheme.size(); i++) { - QPixmap pixmap(64, 64); - QPainter painter; - painter.begin(&pixmap); - painter.fillRect(pixmap.rect(), scheme.at(i)); - painter.end(); - - QPushButton *button = new QPushButton(pixmap, "", this); - button->setFixedSize(48, 48); - layout->addWidget(button); + ColorButton *button = new ColorButton(this, i); + layout->addWidget(button, (i - (i % 3)) / 3, i % 3); group.addButton(button, i); } -- 1.7.9.5