Найти - Пользователи
Полная версия: PyQt4 Как прикрутить QStatusBar в QWidget?
Начало » GUI » PyQt4 Как прикрутить QStatusBar в QWidget?
1
JOHN_16
Собственно вопрос именно о QWidget, про QMainWindow знаю, но вопрос уже имеет под собой не только практический, но и принципиальный контекст. Должно же работать по идее.
Суть проблемы в том что Появляющийся статус бар лежит не в низу, а сверху, и не по всей длине окна, а с фиксированным размером.
P.S. Судя по поиску вопрос когда то поднимался,но остался без ответа… Хотелось бы разобраться ибо считаю вопрос актуальным.
dartNNN
А можно узнать почему вас QMainWindow не устраивает? И почему вы считаете вопрос актуальным? (мне бы в страшном сне не приснилось такое сделать:))
ZZZ
dartNNN прав, QMainWindow в девяносто девяти случаях из ста хватает.
С теоретический точки зрения, нужно на корневой виджет повесить два виджета: собственно статусбар и центральный виджет (посмотри на QMainWindow.centralWidget, или как-то так), ну и повесить лайоут. Сам Qt ничего за тебя делать не будет. :-)
JOHN_16
dartNNN не устраивает это не верно, устраивает. А вот мне пришло в голову такое:)ну как говорится, наверное это мои исключительные проблемы.
ZZZ но у QWidget нету метода setCentralWidget. а С Layout статус бар прилепляется не с самого низу (как в случае с QMainWindow).

Вообще, к слову зачем это. Теоретически это должно работать (ничто не указывает на обратное) - значит оно должно работать и практически.
ZZZ
JOHN_16
но у QWidget нету метода setCentralWidget
И правильно.

JOHN_16
С Layout статус бар прилепляется не с самого низу
Я давно не писал на qt, но поверь, это очень просто обходится. У виджета есть свойство… “Margin”. что ли?.. Не помню. Но вот оно отвечает за это самое “не с самого низу”.

JOHN_16
Вообще, к слову зачем это. Теоретически это должно работать (ничто не указывает на обратное) - значит оно должно работать и практически.
Конечно. Ведь QMainWindow, это лишь сборище трёх виджетов и одного лайоута. И не более того. :-)
JOHN_16
ZZZ Спасибо что направил в нужное русло. Решение простое, аж стыдно, но сошлюсь на свою неопытность в PyQt

class Main(QWidget):
def __init__(self):
super(Main,self).__init__()

self.sb=QStatusBar(self)
self.sb.showMessage('Hello',5000)

self.text=QTextEdit(self)

h=QVBoxLayout()
h.addWidget(self.text)
h.addWidget(self.sb)
h.setContentsMargins(3,3,3,0)
self.setLayout(h)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB