QWidgetAction not visible

  • Hi

    I want a QMenu with oridnary QActions and a QProgressBar in it, so I use na QWidgetAction. The problem is - progress bar isn't visible at all. There's an empty row in the menu, but nothing in it. I've tried to change QProgressBar for something simpier, for example a QPushButton, but the effect is the same - an empty row. Even QLabel doesn't work.

    @QWidgetAction *widgetAction = new QWidgetAction(this);
    widgetAction->setDefaultWidget(new QPushButton("Test button"));
    menu->addAction(widgetAction); @

    What am I doing wrong?

    I forgot to mention that it's a popup menu that appears when user clicks on a tray icon.

  • Moderators

    setDefaultWidget() works only for a single container showing the action, so are you adding widgetAction also somewhere else (like toolbar or other menu that is shown earlier)?
    To show a widget for each container that shows the action subclass QWidgetAction, implement virtual method createWidget() and return a new instance of that widget.

  • I've already read about it and no - this is the only place where I put it.

    But talking about this - I also tried to subclass QWidgetAction and override createWidget() in the first place - the same story.

  • Moderators

    Hm, that's odd.

    This works for me:

    class MyWidgetAction : public QWidgetAction {
        MyWidgetAction(QObject* parent = 0) : QWidgetAction(parent) {}
        QWidget* createWidget(QWidget *parent) {
            QProgressBar* pb = new QProgressBar(parent);
            return pb;
    MainWindow::MainWindow(QWidget *parent) :
        ui(new Ui::MainWindow)
        QMenu* trayMenu = new QMenu(this);
        MyWidgetAction* widgetAction = new MyWidgetAction(this);
        ui->mainToolBar->addAction(widgetAction); //without this works too
        QSystemTrayIcon* trayIcon = new QSystemTrayIcon(this);

    Can you see any relevant differences with what you have?

  • Not a single difference.

    I ran your code and the progress bar doesn't show.

    I'm using Ubuntu 12.04 (gnome3, unity).

Log in to reply

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.