[Qt-interest] Change Background color of Qaction.Qt, GUI, QAction, Menu, QToolBar

Efan... efanharris at gmail.com
Wed Aug 4 20:20:22 CEST 2010


Thank you Irfan Omair,
It helped.

On Wed, Aug 4, 2010 at 11:06 AM, Irfan Omair <irfan.omair.qt at gmail.com>wrote:

> Harris, It is Good idea to care for those who filters on some key word.
>
> Actually There are a couple of ways you can do this.
>  Either you can use a QWidgetAction in which case you can give it the
> widget yourself and as
> such just set the icon you want.
> Otherwise you can subclass the ToolBar and check when a new button is
> added and then query for the newly created button.
>
> I have just written an example for you which I m sure will help you, have a
> look:
>
> class ToolBar : public QToolBar
> {
>     Q_OBJECT
> public:
>     ToolBar(const QString &title, QWidget *parent = 0)
>         : QToolBar(title, parent)
>     {
>         extensionButton = qFindChild<QToolButton*>(this,
> "qt_toolbar_ext_button");
>     }
>     void actionEvent(QActionEvent *e)
>     {
>         QToolBar::actionEvent(e);
>         if (e->type() == QEvent::ActionAdded) {
>             QSet<QToolButton*> buttons =
> qFindChildren<QToolButton*>(this).toSet();
>             buttons.remove(extensionButton);
>             Q_ASSERT(buttons.size() - 1 == actions.size());
>             QSet<QToolButton*> added = buttons - actions.values().toSet();
>             Q_ASSERT(added.size() == 1);
>             actions[e->action()] = *added.begin();
>         } else if (e->type() == QEvent::ActionRemoved) {
>             actions.remove(e->action());
>         }
>     }
>     QToolButton *button(QAction *action) const
>     {
>         return actions.value(action);
>     }
> private:
>     QMap<QAction *, QToolButton*> actions;
>     QToolButton *extensionButton;
> };
>
> class MainWindow : public QMainWindow
> {
>     Q_OBJECT
> public:
>     MainWindow(QWidget *parent = 0)
>         : QMainWindow(parent)
>     {
>         addToolBar(tb = new ToolBar("foo", this));
>         one = tb->addAction("One");
>         two = tb->addAction("Two");
>         three = tb->addAction("Three");
>         setCentralWidget(new QTextEdit(this));
>         tb->button(one)->setStyleSheet("background: red");
>         tb->button(two)->setStyleSheet("background: blue");
>         tb->button(three)->setStyleSheet("background: green");
>     }
> public slots:
> private:
>     ToolBar *tb;
>     QAction *one, *two, *three;
> };
> #include "main.moc"
>
> int main(int argc, char **argv)
> {
>     QApplication a(argc, argv);
>     MainWindow w;
>     w.show();
>     return a.exec();
> }
>
>
> Regards,
>
> Irfan Omair
> Qt Developer
>
>
> On Wed, Aug 4, 2010 at 10:59 AM, Efan... <efanharris at gmail.com> wrote:
>
>> made change in subject line for those who filter on Tags
>>
>> On Wed, Aug 4, 2010 at 10:51 AM, Efan... <efanharris at gmail.com> wrote:
>>
>>> How do I change a background color of a QAction? I created a toolbar and
>>> added several actions into it using the method:QAction discoverAction
>>> =toolBar->addAction(QIcon(":/Resources/search.png"), "Discover"); It appears
>>> that all actions that I added are displayed as toolButtons
>>> within the toolbar. How do I modify the background color of it? I would
>>> like to highlight my discoverAction, but I do not know how to do
>>> this. It does not appear that this uses a palette. I can modify the
>>> background of the toolbar itself, but not individual buttons.
>>>
>>> --
>>> Harris
>>>
>>
>>
>>
>>
> Irfan Omair




-- 
Efan Harris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20100804/ce13cc71/attachment.html 


More information about the Qt-interest-old mailing list