-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbtntextcolor.cpp
90 lines (71 loc) · 2.32 KB
/
btntextcolor.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "btntextcolor.h"
#include <QMenu>
#include <QColorDialog>
#include <QPainter>
#include <QVBoxLayout>
#include <QDebug>
ColorButton::ColorButton( QWidget * parent )
: QToolButton( parent ),
d( new d_ColorButton() )
{
createGUI();
setColor( Qt::black );
setDefaultColor( Qt::black );
QObject::connect( this, SIGNAL( clicked() ), SLOT( defaultColor() ) );
}
ColorButton::~ColorButton()
{
delete d;
}
QColor ColorButton::color()
{
return d->color;
}
void ColorButton::createGUI()
{
setPopupMode( QToolButton::MenuButtonPopup );
d->tButtonDefaultColor = new QToolButton();
d->tButtonDefaultColor->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
d->tButtonDefaultColor->setText( tr( "Default color" ) );
QObject::connect( d->tButtonDefaultColor, SIGNAL( clicked() ), SLOT( defaultColor() ) );
d->colorPalette = new ColorPalette( ":/FormattingToolbar/palette" );
QObject::connect( d->colorPalette, SIGNAL( selectedColor( QColor ) ), SIGNAL( selectedColor( QColor ) ) );
d->tButtonSelectColor = new QToolButton();
d->tButtonSelectColor->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
d->tButtonSelectColor->setText( tr( "Another color" ) );
d->tButtonSelectColor->setIcon( QIcon( ":/FormattingToolbar/icon palette" ) );
QObject::connect( d->tButtonSelectColor, SIGNAL( clicked() ), SLOT( anotherColor() ) );
QMenu * menu = new QMenu();
QObject::connect( this, SIGNAL(selectedColor(QColor)), menu, SLOT(hide()) );
QVBoxLayout * layout = new QVBoxLayout();
layout->addWidget( d->tButtonDefaultColor );
layout->addWidget( d->colorPalette );
layout->addWidget( d->tButtonSelectColor );
layout->addStretch();
menu->setLayout( layout );
setMenu( menu );
}
void ColorButton::defaultColor()
{
emit selectedColor( Qt::black );
}
void ColorButton::anotherColor()
{
const QColor & color = QColorDialog::getColor( d->color, this );
if( !color.isValid() )
return;
emit selectedColor( color );
}
void ColorButton::setColor( const QColor & color )
{
d->color = color;
QPixmap pixmap( 16, 16 );
pixmap.fill( color );
setIcon( pixmap );
}
void ColorButton::setDefaultColor( const QColor & color )
{
QPixmap pixmap( 16, 16 );
pixmap.fill( color );
d->tButtonDefaultColor->setIcon( pixmap );
}