void QGraphicsWidgetPrivate::updatePalette(const QPalette &palette) { Q_Q(QGraphicsWidget); // Update local palette setting. this->palette = palette; // Calculate new mask. if (q->isWindow() && !q->testAttribute(Qt::WA_WindowPropagation)) inheritedPaletteResolveMask = 0; int mask = palette.resolve() | inheritedPaletteResolveMask; // Propagate to children. for (int i = 0; i < children.size(); ++i) { QGraphicsItem *item = children.at(i); if (item->isWidget()) { QGraphicsWidget *w = static_cast<QGraphicsWidget *>(item); if (!w->isWindow() || w->testAttribute(Qt::WA_WindowPropagation)) w->d_func()->resolvePalette(mask); } else { item->d_ptr->resolvePalette(mask); } } // Notify change. QEvent event(QEvent::PaletteChange); QApplication::sendEvent(q, &event); }
void PPort::showClickFeedback() { QPalette p; p.resolve(palette()); p.setColor(QPalette::Button, Qt::yellow); setPalette(p); }
QPalette QGraphicsWidgetPrivate::naturalWidgetPalette() const { Q_Q(const QGraphicsWidget); QPalette palette; if (QGraphicsWidget *parent = q->parentWidget()) { palette = parent->palette(); } else if (scene) { palette = scene->palette(); } palette.resolve(0); return palette; }
QPalette PaletteEditor::getPalette(QDesignerFormEditorInterface *core, QWidget* parent, const QPalette &init, const QPalette &parentPal, int *ok) { PaletteEditor dlg(core, parent); QPalette parentPalette(parentPal); uint mask = init.resolve(); for (int i = 0; i < (int)QPalette::NColorRoles; i++) { if (!(mask & (1 << i))) { parentPalette.setBrush(QPalette::Active, static_cast<QPalette::ColorRole>(i), init.brush(QPalette::Active, static_cast<QPalette::ColorRole>(i))); parentPalette.setBrush(QPalette::Inactive, static_cast<QPalette::ColorRole>(i), init.brush(QPalette::Inactive, static_cast<QPalette::ColorRole>(i))); parentPalette.setBrush(QPalette::Disabled, static_cast<QPalette::ColorRole>(i), init.brush(QPalette::Disabled, static_cast<QPalette::ColorRole>(i))); } } dlg.setPalette(init, parentPalette); const int result = dlg.exec(); if (ok) *ok = result; return result == QDialog::Accepted ? dlg.palette() : init; }
void QGraphicsWidgetPrivate::setPalette_helper(const QPalette &palette) { if (this->palette == palette && this->palette.resolve() == palette.resolve()) return; updatePalette(palette); }