【发布时间】:2011-03-11 11:47:42
【问题描述】:
您好!
我有一个QDialog myDialog;,并希望使用QWidget myDrawer( &myDialog, Qt::Drawer ) 向其附加更多信息。这工作正常,除了抽屉总是附加到 myDialog 的左侧。我需要它在右侧。我不知道该怎么做。
任何提示和想法将不胜感激! 谢谢,最好的问候, 罗宾
【问题讨论】:
您好!
我有一个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中的任何一个
【讨论】: