Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QMenuBar и QAction в Windows Mobile
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
pluzhnikvictor
Добрый день. Проблема заключается в том, что в MenuBar меню отображается справа-внизу с надписью "Menu", а хотелось бы написать русскими буквами и отобразить панель ToolBar здесь же, как это можно сделать при помощи MFC (чтобы оставить на экране больше полезного места).

Т.е. в нижней части экрана хотелось бы видеть (слева-направо) :

Меню | toolbar(кнопки) | значок виртуальной клавиатуры.

Решал кто-нибудь подобную задачу?
Litkevich Yuriy
ничего не понял.
pluzhnikvictor
Еще раз. ОС - Windows Mobile 5.0 (русская версия). QT - 4.5.2. IDE - Visual Studio 2008.

1. Если я создаю окно на основе QMainWindow и создаю меню для этого окна, то оно (меню) появляется внизу экрана справа с текстом "Menu". Текст поменять не удается.
2. Если я создаю ToolBar для главного окна, он появляется вверху экрана, а хотелось бы его поместить там же, где и меню, т.е. внизу экрана.

Все это нужно для того, чтобы сделать интерфейс, похожий на тот, который получается при построении приложения для Windows Mobile с помощью MFC и таким образом уместить Menu и Toolbar в одной строке внизу экрана.

Я пересмотрел все примеры по QT, но ничего похожего не нашел.
Можно, конечно, и ручками меню и toolbar рисовать, но думаю, что должно быть простое решение.
Litkevich Yuriy
1) приведи код создания меню
MoPDoBoPoT
Могу предложить попробовать:
1. Создать объект QToolBar
2. Задать ему расположение setAllowedAreas(Qt::BottomToolBarArea);
3. Добавить в него QMenuBar(или QMenu, смотря что надо) методом addWidget(QWidget *widget);
4. Добавить разделитель addSeparator();
5. Добавить необходимые QAction, добавить разделитель, добавить значок виртуальной клавиатуры
---
6. Если элементы в QToolBar'е будут располагаться справа налево, то воспользоваться методом setLayoutDirection(Qt::LeftToRight)
7. Насчет "Текст поменять не удается." - странно как-то. Хотя под мобилки не писал.
pluzhnikvictor
Цитата(MoPDoBoPoT @ 7.9.2009, 23:34) *
Могу предложить попробовать:
1. Создать объект QToolBar
2. Задать ему расположение setAllowedAreas(Qt::BottomToolBarArea);
3. Добавить в него QMenuBar(или QMenu, смотря что надо) методом addWidget(QWidget *widget);
4. Добавить разделитель addSeparator();
5. Добавить необходимые QAction, добавить разделитель, добавить значок виртуальной клавиатуры
---
6. Если элементы в QToolBar'е будут располагаться справа налево, то воспользоваться методом setLayoutDirection(Qt::LeftToRight)
7. Насчет "Текст поменять не удается." - странно как-то. Хотя под мобилки не писал.


Да, такой вариант подходит за единственным исключением: для Windows Mobile setAllowedAreas(Qt::BottomToolBarArea) для ToolBar не размещает его внизу. Нужно после создания ToolBar'а вызвать addToolBar(Qt::BottomToolBarArea, ToolBar).

Примерно так:

CODE
void QMainWindow::createToolbar()
{
QMenu *Menu = new QMenu(tr("&File"), this);
Menu->addAction(openAct);
Menu->addSeparator();
Menu->addAction(exitAct);
menuBar()->addMenu(Menu);

ToolBar = addToolBar(tr("Edit"));
ToolBar->addWidget(menuBar());
ToolBar->addSeparator();
ToolBar->addAction(openAct);
ToolBar->addSeparator();
ToolBar->addAction(exitAct);
//ToolBar->setAllowedAreas(Qt::BottomToolBarArea); // Такой вариант ничего не дает
addToolBar(Qt::BottomToolBarArea, ToolBar); // А вот этот - изменяет расположение ToolBar, но не добавляет его
}


Спасибо за помощь.
MoPDoBoPoT
Рад помочь.
А почему бы тогда сразу не сделать так?
...
ToolBar = addToolBar(Qt::BottomToolBarArea, tr("Edit"));
ToolBar->addWidget(menuBar());
..
pluzhnikvictor
Такого метода нет. :)

Только: void addToolBar ( Qt::ToolBarArea area, QToolBar * toolbar )
т.е. расположение можно задать только для уже существующего ToolBar'а.
MoPDoBoPoT
Ага, не туда посмотрел (:
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.