Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Разработка GUI > Проблема с главным меню и статус баром


Автор: Sergey912 22.1.2009, 03:06
Сделал интерфейс с помощью сетки, примерно так же как здесь http://forum.script-coding.info/viewtopic.php?pid=15928#p15928
Но теперь появилась проблема с QStatusBar и QMenuBar
Пока их не добавишь на горизонтальный, вертикальный или табличный на форме они не появляются. А если добавить то встают не там где должный быть при привычном интерфейсе с большим отступом от краев окна.
Как поставить их на свое место?
Например, вот эти:
Код

        exit = QtGui.QAction(QtGui.QIcon('icons/exit.png'), 'Exit', self)
        exit.setShortcut('Ctrl+Q')
        exit.setStatusTip('Exit application')
        self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
        QtGui.QStatusBar()
        menubar = QtGui.QMenuBar()
        file = menubar.addMenu('&File')
        file.addAction(exit)

Может быть они там и есть, но их менеджеры перекрывают? Как это обойти тогда?

Автор: pythonwin 22.1.2009, 10:46
попробуй спросить на http://python.su/forum/viewforum.php?id=18

Автор: Любитель 22.1.2009, 17:27
Стоп. Кто их перекрывает. Где остальной код (создание других виджетов). Если используется архитектура MainWindow, то все виджеты надо "упаковать" в один и назначить его как centralWidget для mainWindow. Сомневаюсь, что в PyQt что-то иначе smile

Автор: Sergey912 22.1.2009, 20:42
Любитель, 
Там много кода, создание идет по принципу аналогично тому что по ссылке. Перекрывает их менеджер горизонтального размещение, что и бывает если после его использования кинуть на форму что-то в обход менеджера
Там элементы "под" становится видно если порастягивать окно, но тут главного меню не видно никак 
Используется QWidget

Автор: Любитель 22.1.2009, 21:00
Смотри. MainWindow "делится" на статусбары, тулбары, докеры, меню и центральный виджет. Всё. Никак добавлять виджеты в MainWindow не надо. Все они должны добавляться только в centralWidget (если быть точным - в лэйоут, применяемый к centralWidget-у). Лэйоут у самого MainWindow ставить не надо.

Добавлено через 36 секунд
В примере по ссылке создаётся именно виджет. У тебя как я понял нечто, наследующееся от MainWindow. Да?

Автор: Sergey912 22.1.2009, 21:48
Цитата


В примере по ссылке создаётся именно виджет. У тебя как я понял нечто, наследующееся от MainWindow. Да? 

Нет, я использую именно QWidget т.к. столкнулся с проблемой, когда делал лайоуты на QMainWindow и стал делать на QWidget, с ходу не вспомню что было, но переделывать пример по ссылке на QMainWindow нормально не получилось. Главное меню и статус бар тогда не нужны были, а теперь вот надо   smile 

С QMainWindow выходит их стоит только создать и меню и статус бар сами на место встанут, правильно?
А на QWidget получится их втиснуть или переделывать нужно?

Автор: Любитель 24.1.2009, 16:28
Цитата(Sergey912 @  22.1.2009,  21:48 Найти цитируемый пост)
С QMainWindow выходит их стоит только создать и меню и статус бар сами на место встанут, правильно?

Да. В мейнвиндоу лайоуты интегрированы.

Цитата(Sergey912 @  22.1.2009,  21:48 Найти цитируемый пост)
А на QWidget получится их втиснуть или переделывать нужно?

Без лишних проблем не получится. Если уже есть виджет - создай объект класса QMainWindow (ну или наследник от него), в него добавь меню и пр. и поставь твой виджет как centralWidget.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)