【问题标题】:How can I change the side on which a Qt::Drawer opens on Mac?如何更改 Qt::Drawer 在 Mac 上打开的一侧?
【发布时间】:2011-03-11 11:47:42
【问题描述】:

您好!

我有一个QDialog myDialog;,并希望使用QWidget myDrawer( &myDialog, Qt::Drawer ) 向其附加更多信息。这工作正常,除了抽屉总是附加到 myDialog 的左侧。我需要它在右侧。我不知道该怎么做。

任何提示和想法将不胜感激! 谢谢,最好的问候, 罗宾

【问题讨论】:

    标签: qt macos drawer


    【解决方案1】:

    这通常由操作系统完成。尝试将窗口移动到靠近屏幕左边缘并打开抽屉 - 现在它应该在右侧打开。

    一般来说,尽量避免使用抽屉,因为它们似乎已经不受欢迎,而且现在不再是预期的“外观和感觉”的一部分。


    更新:

    抱歉 - 正确,它们仍在人机交互指南中,但大多数开发人员不再使用它们。从几个董事会和 IRC 频道的讨论来看,他们似乎感觉“不自然”,因为它们不是“窗口”的一部分。

    回到您的问题;我怀疑您可以控制抽屉从 Qt 滑出的一侧。此外,它可能会有所不同,具体取决于您使用的是 Cocoa-Qt 还是 Carbon-Qt。至少我在 Qt 文档中找不到任何相关内容。

    【讨论】:

    • 嗨,坏猫!感谢您的回答。试过了 - 仍然在左侧(屏幕外)打开。 “这些天不再是预期的“外观和感觉”的一部分了” > 你有任何参考/风格指南暗示吗?
    • 抽屉仍在官方风格指南中。如果没有,请给我一个链接,以便我获得更新的正式版本。
    • 抽屉仍在 Apple UIG 中。但是这些天使用的越来越少了。其他平台上没有相应的小部件可能是其中的主要部分。在我看来,可停靠的浮动窗口更有意义。
    【解决方案2】:

    demos\mainwindow项目中,mainwindow.cpp中有几行(第311-314行):

    #ifndef Q_WS_MAC
        { "Black", 0, Qt::LeftDockWidgetArea },
    #else
        { "Black", Qt::Drawer, Qt::LeftDockWidgetArea }
    

    我现在无法访问 OS X,但我记得我通过上述项目学会了改变抽屉的侧面。所以你可以在 OS X 中玩转这个项目。

    这是可能的:

    但您必须使用 QDockWidget 作为 Qt::Drawer 小部件; 以下代码来自 QMainWindow 类:

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        QDockWidget *drawdock = new QDockWidget(this,Qt::Drawer);
        this->addDockWidget(Qt::RightDockWidgetArea,drawdock);
    }
    

    在运行时改变抽屉的边:

    QMainWindow *mainWindow = qobject_cast<QMainWindow *>(this);
    mainWindow->addDockWidget(Qt::BottomDockWidgetArea,drawdock);
    

    这些区域可以是DockWidgetAreas中的任何一个

    【讨论】:

    • 谢谢!我试过了,虽然我希望避免使用 QDockWidget,但至少它有效。竖起大拇指,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-06-16
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2011-11-17
    • 2020-08-24
    • 1970-01-01
    相关资源
    最近更新 更多