在 macOS 上的另一个窗口中打开小部件

Posted

技术标签:

【中文标题】在 macOS 上的另一个窗口中打开小部件【英文标题】:Open widget in another window on macOS 【发布时间】:2019-09-04 22:35:36 【问题描述】:

应用程序将另一个小部件作为窗格打开。我想这遵循 macOS 指南,但是否可以强制小部件在另一个窗口中打开?

像这样:

#include <QApplication>
#include <QMainWindow>

int main(int argc, char *argv[]) 
    QApplication a(argc, argv);

    QMainWindow w;
    w.setWindowTitle("Main Widget");
    w.show();

    QWidget anotherWidget;
    anotherWidget.setWindowTitle("Another Widget");
    anotherWidget.show();

    return a.exec();

【问题讨论】:

FWIW 当我在我的 Mac 上编译和运行发布的代码时,它会打开两个单独的窗口(使用 MacOS/X 10.14.6 和 Qt 5.13.0)。 AFAICT 您的代码是正确的;我认为您要做的是转到“系统偏好设置”中的“停靠偏好设置”窗格,并将“打开文档时首选选项卡”设置更改为“始终”以外的其他设置。 当然。尽管如此,我还是想知道是否有某种方法可以捕获该设置。 我怀疑有没有办法在 Qt 中做到这一点;可能有一些 Objective C 或 CoreFoundation 类型的 API,但如果有我不知道它是什么。 【参考方案1】:

为此,您需要将第二个小部件的标志设置为Qt::Dialog

QWidget anotherWidget;
anotherWidget.setWindowTitle("Another Widget");
anotherWidget.setWindowFlag(Qt::Dialog);
anotherWidget.show();

【讨论】:

【参考方案2】:

将 anotherWidget 作为 QMainWindow 类型而不是 QWidget 打开。

【讨论】:

根据我的经验,这对 Apple 的自动选项卡行为没有影响。

以上是关于在 macOS 上的另一个窗口中打开小部件的主要内容,如果未能解决你的问题,请参考以下文章

wxPython:在向框架添加一个窗口小部件时,窗口小部件定位不正确

如何设置宽度等于android上的另一个小部件

动态更改小部件的文本颤动/飞镖

如何使小部件随 PyQt5 中的窗口缩放?

如何在颤动的另一个有状态小部件中访问在一个有状态小部件中创建的对象

如何在保留在主屏幕上的小部件中打开另一个视图?