[Interest] Struggling with moveEvent()
Adam Light
aclight at gmail.com
Thu Oct 4 16:56:52 CEST 2018
On Wed, Oct 3, 2018 at 6:27 AM Murphy, Sean <smurphy at walbro.com> wrote:
>
> This looks promising - I had never stumbled across QWidgetAction before.
> Although now
> that you point it out, I've discovered the section of the QMenu
> documentation that I
> previously skimmed over that mentions it!
>
> Is the code in your paintEvent() something you can share, if there's
> anything noteworthy
> happening in there?
>
I don't think it's very noteworthy, but here's what we're using:
void WMColorPickerToolButton::paintEvent(QPaintEvent* event) {
Q_UNUSED(event);
QStylePainter painter(this);
painter.save();
painter.setPen(palette().color(QPalette::Text));
// Draw the regular tool button elements.
QStyleOptionToolButton opt;
initStyleOption(&opt);
// Clear the text in the opt object since text that we don't
// draw in this function will get in the way of the button's
// regular text.
opt.text.clear();
painter.drawComplexControl(QStyle::CC_ToolButton, opt);
// Get the rectangle into which the sample should be drawn.
QRect destField(style()->subControlRect(QStyle::CC_ToolButton, &opt,
QStyle::SC_ToolButton));
// Offset the rectangle by the style's button margin pixel metric.
int margin = style()->pixelMetric(QStyle::PM_ButtonMargin, &opt, this);
destField.adjust(margin, margin, -margin, -margin);
// Draw the patterned background
WMColorPickerWidget::drawPatternedBackground(&painter, destField);
// Draw the color sample.
painter.fillRect(destField, _colorPickerAction->currentColor());
// Draw an outline rectangle.
QRect outlineRect(destField);
outlineRect.adjust(0, 0, -1, -1);
painter.setPen(palette().color(QPalette::Text));
painter.drawRect(outlineRect);
int thickness = 1;
outlineRect.adjust(thickness, thickness, -thickness, -thickness);
painter.setPen(palette().color(QPalette::Light));
painter.drawRect(outlineRect);
// Restore the painter.
painter.restore();
}
WMColorPickerWidget::drawPatternedBackground draws a checkerboard
background so that it's more obvious if a color's alpha value is not fully
opaque.
To be clear, that's the paintEvent for the tool button itself. The QWidget
that's used by the QWidgetAction is just a container for other widgets in a
layout and doesn't have any need to reimplement paintEvent.
Adam
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20181004/5db4dca9/attachment.html>
More information about the Interest
mailing list