QDialog - 如何移除最小化按钮

7

基于Qt 4.8的应用程序 - QDialog的问题,最小化按钮

  • Windows和Gnome(Linux)

    • 模态对话框出现在右上角的关闭按钮上,最小化按钮不存在
    • 每个对话框中的最小化选项都是灰色的。
    • 这很有道理,因为QDialog是模态的 - 如果将其最小化,整个应用程序将被阻止。

但问题来了:

  • 在KDE(Linux)中,最小化和最大化按钮会出现。

看起来这是一个平台相关的功能 -

我不太确定该怎么做。

有什么想法...?(我已经尝试过几个windowsFlags,但找不到适用的设置。)

尝试过:

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

--- 但基本问题是为什么Windows / GNOME上的行为与KDE不同


1
你具体尝试了什么? - Jablonski
setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint); Qt::WindowFlags flags = getWindowFlags(); flags |= Qt::WindowMinimizeButtonHint; setWindowFlags(flags)但基本问题是为什么Windows/GNOME上的行为与KDE不同 - Theo
2个回答

5

如果你想让MainWindow在顶部没有任何按钮,请在MainWindow的构造函数中使用以下代码:

this->setWindowFlags(Qt::SubWindow);

如果您想仅删除最小化按钮,请使用以下内容:

this->setWindowFlags(Qt::Dialog);

1
只有在设置QDialog对象的父级时才能正常工作;请注意,它不会删除最大化按钮。(这是仅适用于KDE的行为) - Theo

0

来自Qt文档

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 );

3
两个问题:(a) 只有在设置QDialog对象的父级时才起作用;(b) 这段代码只会移除最小化按钮,而不是最大化按钮。 - Theo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接