如何在Qt中删除Mac OS X工具窗口中的最大化按钮

And*_*ice 5 macos qt

我有一个浮动工具窗口.它在Windows上工作正常,但我无法摆脱Mac OS X上的最大化按钮.我尝试取消 Qt::WindowMaximizeButtonHint设置并将窗口设置为固定大小.似乎没什么用.

MyWidget::MyWidget( QWidget* parent )
:QWidget( parent, Qt::Tool | Qt::CustomizeWindowHint )
{
   setupUi( this );

   setFixedSize( sizeHint() ); // doesn't remove maximise button
   setWindowFlags( windowFlags() & ~Qt::WindowMaximizeButtonHint ); // doesn't remove maximise button
}
Run Code Online (Sandbox Code Playgroud)

我不想使用无框窗口.有任何想法吗?我使用的是Qt 4.4.

Kam*_*mek 10

启动Qt windowflags示例应用程序.选择Tool单选按钮然后检查:

  • 窗口标题
  • 自定义窗口
  • 窗口关闭按钮

这是我在Mac OS X上找到的唯一方法来实现你想要的但是你会松开最小化按钮.别无他法.那是Mac OS X Window Manager的限制.

总而言之,标题栏中只有五组按钮:

  1. 显示所有按钮并启用所有按钮: setWindowFlags(Qt::Tool)
  2. 启用所有按钮可见,关闭和最大化按钮,最小化按钮禁用: setWindowFlags(Qt::Tool | Qt::WindowTitleHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint | Qt::CustomizeWindowHint)
  3. 所有按钮可见,最大化按钮启用,关闭和最小化禁用: setWindowFlags(Qt::Tool | Qt::WindowTitleHint | Qt::WindowMaximizeButtonHint | Qt::CustomizeWindowHint)
  4. 只有关闭按钮可见并启用 setWindowFlags(Qt::Tool | Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::CustomizeWindowHint)
  5. 标题栏中没有按钮: setWindowFlags(Qt::Tool | Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::CustomizeWindowHint)


And*_*ice 4

来自诺基亚的 Richard Gustavsen 的这段代码适用于 Qt 4.4:

class MyWidget : public QWidget
{
    public:

    MyWidget::MyWidget( QWidget* parent ) : QWidget(parent, Qt::Tool)
    {
    }

    void setVisible(bool visible)
    {
        QWidget::setVisible(visible);
        ChangeWindowAttributes(qt_mac_window_for(this), kWindowNoAttributes, kWindowFullZoomAttribute);
    }
};
Run Code Online (Sandbox Code Playgroud)

感谢理查德和诺基亚!