QIcon not actually generating variations for QToolButton?
-
note that "state" doesn't seem to be different between "off" and "on", so what is its purpose?
-
Hi
on/off is used for Checkable buttons.
pr default its shown via the frame when checked but could
also have another icon. like big fat checkmark :)Adding
icon.addFile(QStringLiteral(":/test.svg"), QSize(), QIcon::Normal, QIcon::Off);
also generates the other icons as i can later paint with them.
(in paintevent)
icon().paint(&p,rect(),Qt::AlignCenter, QIcon::Mode::Disabled, QIcon::State::Off); -
i'm using QToolButton, and QImages which have already been created. I'm not loading QIcons directly from files. How do i create a QIcon that i can then load into QToolButton, such that when the user clicks it, it shows a "darkened" or "pressed" image?
-
does nobody else create QIcons programmatically, to be used in QToolButton?
-
does nobody else create QIcons programmatically, to be used in QToolButton?
QImage img(":/Icon.png"); auto toolButton = new QToolButton(toolBar); toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); auto act = new QAction(); act->setIcon(QPixmap::fromImage(img)); act->setText("text"); toolButton->setDefaultAction(act);
-
that code snip only adds in a single state (the up state). i have separate pngs for the down and disabled state that never get used. how do i cause my tool button to use those states?
-
that code snip only adds in a single state (the up state). i have separate pngs for the down and disabled state that never get used. how do i cause my tool button to use those states?
-
@kshegunov that's literally the code i'm already using but it's not working. see the code snips at the start of this thread, am I doing it wrong?
-
@kshegunov that's literally the code i'm already using but it's not working. see the code snips at the start of this thread, am I doing it wrong?
Yeah, sorry. I think it worked for a push button. could you try that? I don't recall currently if it's supposed to work with the toolbar button, I remember recently doing something akin but it was a table delegate so I was drawing it manually.
EDIT:
I think my brain had gone on a vacation ...
What style are you using? Is it possible the style doesn't support that? I usually use Fusion (i.e. Qt drawing). -
not sure what you mean by "style", i'm just using Qt out of the box, i haven't specifically selected a "style".
unfortunately the "QPushButton" does not draw the icon as "pressed" either, it just darkens the background which is not what i want:
-
not sure what you mean by "style", i'm just using Qt out of the box, i haven't specifically selected a "style".
unfortunately the "QPushButton" does not draw the icon as "pressed" either, it just darkens the background which is not what i want:
not sure what you mean by "style", i'm just using Qt out of the box, i haven't specifically selected a "style".
Judging by your screenshot you're using the native osx style.
From what I can see here: https://code.woboq.org/qt5/qtbase/src/widgets/styles/qcommonstyle.cpp.html#1700
The tool button only takes 3 icon states - active, disabled and normal. Selected isn't one of them. But that's for Fusion, I have no clue what goes in the native osx style. So first advice - switch to fusion and use Normal/Active to alternate between unpressed/pressed. If that's what you're expecting go back to the native style and see if the problem is there. If so I'd say it's either a bug or limitation of the native style's implementation. -
Fusion
is un-mac-like, so i would not want to use it. strangely, "active" seems to mean "focused". when i click in the button it does turn color as expected but if i track the mouse (keep holding) while dragging OFF the button, it should re-draw in it's UP state, but it doesn't. when i let go it should do the same, but it STAYS looking pressed. if i then click the volume slider, the button THEN draws in the UP state. am i just not getting how this is designed to work? -
here is a minimal (20k) project demonstrating the problem.
-
here is a minimal (20k) project demonstrating the problem.
@davecotter said in QIcon not actually generating variations for QToolButton?:
Fusion is un-mac-like, so i would not want to use it.
I meant it purely as an academic exercise, so to say.
@davecotter said in QIcon not actually generating variations for QToolButton?:
strangely, "active" seems to mean "focused". when i click in the button it does turn color as expected but if i track the mouse (keep holding) while dragging OFF the button, it should re-draw in it's UP state, but it doesn't. when i let go it should do the same, but it STAYS looking pressed. if i then click the volume slider, the button THEN draws in the UP state.
Well, that's odd. Unfortunately I have no answers for you here, sorry.
-
please vote for it / watch it, if you care. thanks.