Как я могу изменить сторону, на которой открывается Qt :: Drawer на Mac? - PullRequest
0 голосов
/ 11 марта 2011

Привет!

У меня есть QDialog myDialog; и я хочу добавить к нему дополнительную информацию, используя QWidget myDrawer( &myDialog, Qt::Drawer ). Это прекрасно работает, за исключением того, что ящик всегда прикрепляется к левой стороне myDialog. Мне это нужно на правой стороне. И я понятия не имею, как это сделать.

Любые советы и идеи будут с благодарностью! Спасибо и всего наилучшего, Robin

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Обычно это делается ОС. Попробуйте переместить окно ближе к левому краю экрана и откройте ящик - теперь он должен открыться с правой стороны.

Как правило, старайтесь избегать использования выдвижных ящиков, так как они кажутся осуждаемыми и больше не являются частью ожидаемого «взгляда и ощущения» в наши дни.


Обновление:

Извините - верно, они все еще находятся в Руководстве по человеческому взаимодействию, но большинство разработчиков больше их не используют. Из обсуждений на нескольких форумах и каналах IRC кажется, что они чувствуют себя «неестественно», поскольку они не являются частью «окна».

Вернемся к вашему вопросу; Я сомневаюсь, что вы можете контролировать сторону выдвижного ящика из Qt. Кроме того, это может иметь значение в зависимости от того, используете ли вы Cocoa- или Carbon-Qt. По крайней мере, я не смог найти ничего относительно этого в документации Qt.

0 голосов
/ 11 марта 2011

В проекте demos \ mainwindow в mainwindow.cpp есть несколько строк (строки 311-314):

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

У меня нет доступана OS X прямо сейчас, но я помню, я научился менять сторону ящика с помощью вышеупомянутого проекта.Таким образом, вы можете обойти этот проект в OS X.

это возможно: on right bottom

, но вам придется использовать 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

...