#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui>
{
Q_OBJECT
QMap<int,QMap<int,QColor> >m_initial_colors;
QMap<int,QMap<int,QColor> >m_checked_colors;
QMap<int,QMap<int,QColor> >m_unchecked_colors;
public:
{
m_but->setCheckable(true);
setFixedSize(300,300);
m_but->setGeometry(100,100,100,100);
butToggled(false);
connect(m_but,SIGNAL(toggled(bool)),SLOT(butToggled(bool)));
}
private slots:
void storeRoleColor
(QMap<int,QMap<int,QColor> >
&map,
QPalette::ColorGroup group,
QPalette::ColorRole role
) {
map[group][role] = m_but->palette().color(group,role);
}
void storeGroupColors
(QMap<int,QMap<int,QColor> >
&map,
QPalette::ColorGroup group
) {
storeRoleColor
(map,group,
QPalette::Window);
storeRoleColor
(map,group,
QPalette::Background);
storeRoleColor
(map,group,
QPalette::WindowText);
storeRoleColor
(map,group,
QPalette::Foreground);
storeRoleColor
(map,group,
QPalette::Base);
storeRoleColor
(map,group,
QPalette::AlternateBase);
storeRoleColor
(map,group,
QPalette::ToolTipBase);
storeRoleColor
(map,group,
QPalette::ToolTipText);
storeRoleColor
(map,group,
QPalette::Text);
storeRoleColor
(map,group,
QPalette::Button);
storeRoleColor
(map,group,
QPalette::ButtonText);
storeRoleColor
(map,group,
QPalette::BrightText);
}
void storeAllColors(QMap<int,QMap<int,QColor> >&map)
{
storeGroupColors
(map,
QPalette::Disabled);
storeGroupColors
(map,
QPalette::Inactive);
}
void butToggled(bool checked)
{
if(m_initial_colors.empty()) {
storeAllColors(m_initial_colors);
} else {
bool print = false;
if(checked) {
storeAllColors(m_checked_colors);
print = ! m_unchecked_colors.empty();
} else {
storeAllColors(m_unchecked_colors);
print = ! m_checked_colors.empty();
}
if(print) {
qDebug() << "result: ";
QMap<int,QMap<int,QColor> >::const_iterator group = m_initial_colors.constBegin();
for(;group != m_initial_colors.constEnd();group++) {
QMap<int,QColor>::const_iterator role = group.value().constBegin();
for(;role != group.value().constEnd();role++) {
int g_id = group.key();
int r_id = role.key();
QColor initial
= m_initial_colors
[g_id
][r_id
];
QColor checked
= m_checked_colors
[g_id
][r_id
];
QColor unchecked
= m_unchecked_colors
[g_id
][r_id
];
if( (initial == checked) && (checked == unchecked)) {
res = "SAME";
} else if(checked == unchecked) {
res = "PARTITIALY SAME";
} else {
res = "DIFFERENT";
}
qDebug() << "[" << g_id << "," << r_id << "] "
<< initial << " : " << checked << " : " << unchecked << " - " << res;
}
}
}
}
}
};
#endif // WIDGET_H
#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui>
class CWidget : public QWidget
{
Q_OBJECT
QPushButton*m_but;
QMap<int,QMap<int,QColor> >m_initial_colors;
QMap<int,QMap<int,QColor> >m_checked_colors;
QMap<int,QMap<int,QColor> >m_unchecked_colors;
public:
CWidget(QWidget*parent=0) : QWidget(parent)
{
m_but = new QPushButton("Button",this);
m_but->setCheckable(true);
setFixedSize(300,300);
m_but->setGeometry(100,100,100,100);
butToggled(false);
connect(m_but,SIGNAL(toggled(bool)),SLOT(butToggled(bool)));
}
private slots:
void storeRoleColor(QMap<int,QMap<int,QColor> >&map,QPalette::ColorGroup group,QPalette::ColorRole role)
{
map[group][role] = m_but->palette().color(group,role);
}
void storeGroupColors(QMap<int,QMap<int,QColor> >&map,QPalette::ColorGroup group)
{
storeRoleColor(map,group,QPalette::Window);
storeRoleColor(map,group,QPalette::Background);
storeRoleColor(map,group,QPalette::WindowText);
storeRoleColor(map,group,QPalette::Foreground);
storeRoleColor(map,group,QPalette::Base);
storeRoleColor(map,group,QPalette::AlternateBase);
storeRoleColor(map,group,QPalette::ToolTipBase);
storeRoleColor(map,group,QPalette::ToolTipText);
storeRoleColor(map,group,QPalette::Text);
storeRoleColor(map,group,QPalette::Button);
storeRoleColor(map,group,QPalette::ButtonText);
storeRoleColor(map,group,QPalette::BrightText);
}
void storeAllColors(QMap<int,QMap<int,QColor> >&map)
{
storeGroupColors(map,QPalette::Disabled);
storeGroupColors(map,QPalette::Active);
storeGroupColors(map,QPalette::Inactive);
}
void butToggled(bool checked)
{
if(m_initial_colors.empty()) {
storeAllColors(m_initial_colors);
} else {
bool print = false;
if(checked) {
storeAllColors(m_checked_colors);
print = ! m_unchecked_colors.empty();
} else {
storeAllColors(m_unchecked_colors);
print = ! m_checked_colors.empty();
}
if(print) {
qDebug() << "result: ";
QMap<int,QMap<int,QColor> >::const_iterator group = m_initial_colors.constBegin();
for(;group != m_initial_colors.constEnd();group++) {
QMap<int,QColor>::const_iterator role = group.value().constBegin();
for(;role != group.value().constEnd();role++) {
int g_id = group.key();
int r_id = role.key();
QColor initial = m_initial_colors[g_id][r_id];
QColor checked = m_checked_colors[g_id][r_id];
QColor unchecked = m_unchecked_colors[g_id][r_id];
QString res;
if( (initial == checked) && (checked == unchecked)) {
res = "SAME";
} else if(checked == unchecked) {
res = "PARTITIALY SAME";
} else {
res = "DIFFERENT";
}
qDebug() << "[" << g_id << "," << r_id << "] "
<< initial << " : " << checked << " : " << unchecked << " - " << res;
}
}
}
}
}
};
#endif // WIDGET_H
To copy to clipboard, switch view to plain text mode
Bookmarks