Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Qt widget displayed over other widgets

I have some information/notification widget that should be displayed when some even occurs. My idea was to have a widget that is hidden in top left corner and would be shown when needed. Problem is that if I just put there simple widget and show it, everything will be moved to the right, what I want is to show that widget on top anything that's in that area (it will hide what's there, but that's ok). I can't use stacked widget, because information widget is in different dimensions then other widgets there. And if I just create floating widget and move it to that area it wont move if main window is moved. Is there any way how to do that?

like image 905
Dainius Avatar asked Jan 26 '15 09:01

Dainius


People also ask

What is Qt stacked widget?

QStackedWidget can be used to create a user interface similar to the one provided by QTabWidget. It is a convenience layout widget built on top of the QStackedLayout class. Like QStackedLayout, QStackedWidget can be constructed and populated with a number of child widgets ("pages"):

Should I use Qt Quick or Qt widgets?

Qt Widgets provide means for customization via style sheets, but Qt Quick is a better performing choice for user interfaces that do not aim to look native. Qt Widgets do not scale well for animations. Qt Quick offers a convenient and natural way to implement animations in a declarative manner.

How do I add a horizontal spacer in Qt?

To place unused space left or right of the text edit put the QTextEdit into a QHBoxLayout and use one of the functions addSpacerItem() , addSpacing() or addStretch() to add spacing.

What are qt5 widgets?

Widgets are the primary elements for creating user interfaces in Qt. Widgets can display data and status information, receive user input, and provide a container for other widgets that should be grouped together. A widget that is not embedded in a parent widget is called a window.


1 Answers

Just create and place the widget on the fly. Avoid using UI to place the widget because then the widget position is managed by the layouts.

EDIT: Remember to create the widget after of the dialog's initialization. If you don't take care about this your widget will be inserted at the bottom.

class Dialog : public QDialog
{
    Q_OBJECT

    std::unique_ptr<Ui::Dialog> _ui;
    QWidget* _widgetOnTheTop;

  public:
    Dialog(QWidget* parent)
      : QDialog(parent), _ui(new Ui::Dialog)
    {
      _ui->setupUi(this);

      _widgetOnTheTop = new QPushButton(this);
      _widgetOnTheTop->setGeometry(10,10,100,35);
      _widgetOnTheTop->show();
    }
};
like image 72
eferion Avatar answered Sep 27 '22 20:09

eferion