问候!
我有一个QDialog myDialog;
并想使用QWidget myDrawer( &myDialog, Qt::Drawer )
. 这工作正常,除了抽屉总是附加到 myDialog 的左侧。我需要它在右侧。我不知道该怎么做。
任何提示和想法将不胜感激!谢谢,最好的问候,罗宾
这通常由操作系统完成。尝试将窗口靠近屏幕的左边缘并打开抽屉 - 它现在应该在右侧打开。
一般来说,尽量避免使用抽屉,因为它们似乎不受欢迎,而且现在不再是预期的“外观和感觉”的一部分。
抱歉 - 正确,它们仍在人机交互指南中,但大多数开发人员不再使用它们。从几个董事会和 IRC 频道的讨论来看,他们似乎感觉“不自然”,因为它们不是“窗口”的一部分。
回到你的问题;我怀疑您可以控制抽屉从 Qt 滑出的一侧。此外,它可能会有所不同,具体取决于您使用的是 Cocoa-Qt 还是 Carbon-Qt。至少我在 Qt 文档中找不到任何相关内容。
在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