Important: Please read the Qt Code of Conduct -

Non-modal Qt::Popup

  • Hello,

    I want to have a QWidget with Qt::Popup window flag. But it needs to be non-modal. Even if I set modality to Qt::NonModal, after setting the windows flags, the popup always blocks interaction with the parent.

    Is this a bug? A feature? What's a workaround for this?

    I'm on Windows.

  • @cidadao ,

    Widget::Widget(QWidget *parent) :
    ui(new Ui::Widget)
    m_Button = new QPushButton(this);
    sample = new QWidget;
    sample->setAttribute( Qt::WA_QuitOnClose, false );
    if(sample->isMinimized()) {
    void Widget::on_pushButton_clicked()

  • @Vinod-Kuntoji it really has to be a Popup, not a FramelessWindow. A Popup doesn't take space in a layout, it is drawn on top other widgets instead.

    If you try your code with Qt::Popup you might have the same problem as OP (can't set a Popup to be non-modal)

  • @cidadao it looks like you want a green ball that is red...

    From Qt documentation about Qt::Popup window type enum:
    "Indicates that the widget is a pop-up top-level window, i.e. that it is modal, but has a window system frame appropriate for pop-up menus."

    so modal it'll be...

  • @Pablo-J-Rogina got it! Modal forever :)
    Still wondering if this OS-specific or just a design choice on Qt's implemantation though.

  • Finally, the exact answer I was looking for:

    Qt::FramelessWindowHint | Qt::Tool

    Instead of using Qt::Popup.

Log in to reply