From acd3734fb7a8e41eaba1056470b87e0bcec87003 Mon Sep 17 00:00:00 2001 From: Jari Jarvi Date: Fri, 28 May 2010 13:32:40 +0300 Subject: [PATCH] Fixed background transparency bug. --- src/mainwidget.cpp | 32 +++++++++++++++++++------------- src/mainwidget.h | 3 +++ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/mainwidget.cpp b/src/mainwidget.cpp index 69cdad2..2ccfae3 100644 --- a/src/mainwidget.cpp +++ b/src/mainwidget.cpp @@ -13,7 +13,7 @@ MainWidget::MainWidget (QWidget *parent) { layout = new QGridLayout(this); - QSettings settings(this); + settings = new QSettings(this); char iconNames[][128] = { "/usr/share/icons/hicolor/48x48/hildon/statusarea_volumelevel4.png", @@ -24,16 +24,13 @@ MainWidget::MainWidget (QWidget *parent) "/usr/share/icons/hicolor/48x48/hildon/statusarea_volume_mute.png" }; - int bgAlpha = settings.value("bgAlpha", "192").toInt(); - for (int i = 0; i < BUTTON_COUNT; ++i) { QToolButton *button = new QToolButton(this); button->setIcon(QIcon(QString( - settings.value(QString("buttonIcon") + QString::number(i), + settings->value(QString("buttonIcon") + QString::number(i), iconNames[i]).toString()))); buttons[i] = button; - button->setPalette(QPalette(QColor(0, 0, 0, bgAlpha))); layout->addWidget(button, i%2, i/2); } @@ -48,21 +45,30 @@ MainWidget::MainWidget (QWidget *parent) layout->setContentsMargins(0, 0, 0, 0); this->setLayout(layout); this->setAttribute(Qt::WA_TranslucentBackground); + this->setAttribute(Qt::WA_OpaquePaintEvent); +} + +MainWidget::~MainWidget() +{ + delete settings; } - void MainWidget::paintEvent(QPaintEvent*) - { - QPainter p(this); - p.setBrush(QColor(0, 0, 0, 128)); - p.setPen(Qt::NoPen); - p.drawRect(rect()); - p.end(); - } +void MainWidget::paintEvent(QPaintEvent*) +{ + int bgAlpha = settings->value("bgAlpha", "192").toInt(); + QPainter p(this); + p.setBrush(QColor(0, 0, 0, bgAlpha)); + p.setPen(Qt::NoPen); + p.drawRect(rect()); + p.end(); +} void MainWidget::showSettingsDialog() { SettingsDlg dlg(this); dlg.exec(); + update(); // Repaint required if bgAlpha value was changed } + diff --git a/src/mainwidget.h b/src/mainwidget.h index 404bef7..cfc0132 100644 --- a/src/mainwidget.h +++ b/src/mainwidget.h @@ -7,12 +7,14 @@ class QGridLayout; class QToolButton; +class QSettings; class MainWidget : public QWidget { Q_OBJECT public: MainWidget (QWidget *parent = NULL); + ~MainWidget(); public slots: void showSettingsDialog(); @@ -25,6 +27,7 @@ private: QGridLayout *layout; QToolButton *buttons[BUTTON_COUNT]; IrCtrl irCtrl; + QSettings *settings; }; #endif -- 1.7.9.5