QDialog - How to remove the minimize button

2020-03-24 08:05发布

问题:

Qt 4.8 based, application - Issue with QDialog, minimize button

  • Windows and Gnome (linux)

    • The modal dialog appears with the close button on the right top, and the minimize button is nonexistent.
    • The minimize option are grayed out in every dialog.
    • This makes sense, since the QDialog is modal - if you minimize it, the whole application will be blocked.

But here comes the issue:

  • in KDE (linux) the minimize-maximize button appears.

It seems that this is a platform dependent feature -

I am not quite sure on what do do.

Any ideas...? (I tried already with a few windowsFlags but could not find the one set that works.

Tried:

  • setWindowFlags( Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint );
  • Qt::WindowFlags flags = getWindowFlags( ); flags |= Qt::WindowMinimizeButtonHint; setWindowFlags(flags)

--- But the basic question is why the behavior on Windows/GNOME is different from KDE

回答1:

if you want the MainWindow don't have any buttons on top use this in constructor of MainWindow:

this->setWindowFlags(Qt::SubWindow);

and if you want to remove just the minimize button use this:

this->setWindowFlags(Qt::Dialog);


回答2:

From the Qt Documentation:

In Linux with KDE this code make a window without an close and minimize and maximize buttons in title bar.

setWindowFlags( Qt::Dialog | Qt::WindowTitleHint );


标签: qt kde qdialog