JOHN_16
Авг. 25, 2010 03:05:23
Собственно вопрос именно о QWidget, про QMainWindow знаю, но вопрос уже имеет под собой не только практический, но и принципиальный контекст. Должно же работать по идее.
Суть проблемы в том что Появляющийся статус бар лежит не в низу, а сверху, и не по всей длине окна, а с фиксированным размером.
P.S. Судя по поиску вопрос когда то поднимался,но остался без ответа… Хотелось бы разобраться ибо считаю вопрос актуальным.
dartNNN
Авг. 25, 2010 06:35:43
А можно узнать почему вас QMainWindow не устраивает? И почему вы считаете вопрос актуальным? (мне бы в страшном сне не приснилось такое сделать:))
ZZZ
Авг. 25, 2010 08:53:41
dartNNN прав, QMainWindow в девяносто девяти случаях из ста хватает.
С теоретический точки зрения, нужно на корневой виджет повесить два виджета: собственно статусбар и центральный виджет (посмотри на QMainWindow.centralWidget, или как-то так), ну и повесить лайоут. Сам Qt ничего за тебя делать не будет. :-)
JOHN_16
Авг. 26, 2010 00:14:21
dartNNN не устраивает это не верно, устраивает. А вот мне пришло в голову такое:)ну как говорится, наверное это мои исключительные проблемы.
ZZZ но у QWidget нету метода setCentralWidget. а С Layout статус бар прилепляется не с самого низу (как в случае с QMainWindow).
Вообще, к слову зачем это. Теоретически это должно работать (ничто не указывает на обратное) - значит оно должно работать и практически.
ZZZ
Авг. 26, 2010 00:44:16
JOHN_16
но у QWidget нету метода setCentralWidget
И правильно.
JOHN_16
С Layout статус бар прилепляется не с самого низу
Я давно не писал на qt, но поверь, это очень просто обходится. У виджета есть свойство… “Margin”. что ли?.. Не помню. Но вот оно отвечает за это самое “не с самого низу”.
JOHN_16
Вообще, к слову зачем это. Теоретически это должно работать (ничто не указывает на обратное) - значит оно должно работать и практически.
Конечно. Ведь QMainWindow, это лишь сборище трёх виджетов и одного лайоута. И не более того. :-)
JOHN_16
Авг. 26, 2010 13:33: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)