Поиск:

Ответ в темуСоздание новой темы Создание опроса
> statusBar над menuBar 
V
    Опции темы
BiTOk
  Дата 15.1.2011, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 23.12.2010

Репутация: нет
Всего: нет



Добрый день. Появилась достаточно специфичная проблема - надо расположить QStatusBar над QMenuBar, стандартных возможностей реализовать такое я не нашёл. Как реализовать подобное? Переписывать стандартные компоненты особого желания нету. 
Сразу отсеку вопросы зачем это и т.д. - это задание от препода, препод бескомпромиссный.
PM MAIL   Вверх
borisbn
Дата 15.1.2011, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(BiTOk @  15.1.2011,  13:41 Найти цитируемый пост)
препод бескомпромиссный

мало давал smile

по существу:

вертикальный layout. вверху QStatusBar, внизу QWidget. У этого QWidget'а вверху QMenuBar 



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
BiTOk
Дата 15.1.2011, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 23.12.2010

Репутация: нет
Всего: нет



Я вообще никогда преподам денег не предлагал, какой смысл, или настучит в деканат о происшествии, или обманешь сам себя.

Огромное спасибо за метод, действительно удалось уталкать эти элементы друг под другом, но зачем был QWidget меж ними? Получился код:
Код

    ui->verticalLayout->setAlignment(Qt::AlignTop);
    ui->verticalLayout->setSpacing(0);
    QStatusBar *testStatus = new QStatusBar(this);
    testStatus->setSizeGripEnabled(false);
    QWidget *testWidget = new QWidget();
    ui->verticalLayout->addWidget(testStatus);
    ui->verticalLayout->addWidget(testWidget);
    QMenuBar *testMenu = new QMenuBar(testWidget);
    ui->verticalLayout->addWidget(testMenu);
    testMenu->addAction("Test menu");
    testStatus->showMessage("Test status text");

Или я не верно понял мысль с QWidget?

ADD
Как сделать, чтобы в это меню передавался фокус по нажатию Alt?

Это сообщение отредактировал(а) BiTOk - 15.1.2011, 15:23
PM MAIL   Вверх
borisbn
Дата 15.1.2011, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(borisbn @  15.1.2011,  14:18 Найти цитируемый пост)
мало давал 

это шутка бил smile


Цитата(BiTOk @  15.1.2011,  14:59 Найти цитируемый пост)
но зачем был QWidget меж ними

я просто не был уверен, что при добавлении меню оно само не вылезет наверх. Если всё получается без QWidget'а - то удали его.

Цитата(BiTOk @  15.1.2011,  14:59 Найти цитируемый пост)
Как сделать, чтобы в это меню передавался фокус по нажатию Alt?

а что, не вызывается ?
а всё-таки, если меню добавлять не в layout, а в widget, Alt его всё равно не вызывает ?


ADD
проверил. при удалении widget'а Alt не вызывает меню, а если сделатьвсё в точности как ты сделал, то всё OK.
Похоже меню вызывается только, если оно лежит первым на widget'е

Это сообщение отредактировал(а) borisbn - 15.1.2011, 16:42


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
BiTOk
Дата 15.1.2011, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 23.12.2010

Репутация: нет
Всего: нет



Несколько странно, но у меня по альту ничего не происходит (виджет оставил). Как интерпретировать:
Цитата

У этого QWidget'а вверху QMenuBar 

Т.е. при создании QMenuBar в качестве parent указать QWidget?

ADD
Платформа Linux, KDE, Qt 4.7.1.

Это сообщение отредактировал(а) BiTOk - 15.1.2011, 17:06
PM MAIL   Вверх
borisbn
Дата 15.1.2011, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(BiTOk @  15.1.2011,  17:01 Найти цитируемый пост)
Как интерпретировать:ЦитатаУ этого QWidget'а вверху QMenuBar Т.е. при создании QMenuBar в качестве parent указать QWidget?

ну да. ты всё сделал так, как я тебе и предлагал. у меня это работает, правда у меня Windows. Хммм, наверное в этом - ОС - и отличие



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
BiTOk
Дата 16.1.2011, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 23.12.2010

Репутация: нет
Всего: нет



Благодарю за помощь.
PM MAIL   Вверх
BiTOk
Дата 18.1.2011, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 23.12.2010

Репутация: нет
Всего: нет



Появилась ещё одна проблема. К вышесозданной композиции надо добавить QDockWidget. При этом получается, что боковые доки вытесняют меню и статус бар. В layout не добавить доки, они цепляются к QMainWindow, а меню лежит внутри layout. Как сделать, чтобы и статус бар был над меню, и меню было над доками?

ADD
Моё решение - в главное окно кладём вертикальный лайаут, в него статусбар, менюбар, и ещё одно QMainWindow, туда цепляем доки.

Это сообщение отредактировал(а) BiTOk - 18.1.2011, 11:35
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0445 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.