Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: L.Marvell от Июль 28, 2005, 14:32



Название: разбиение statusbar
Отправлено: L.Marvell от Июль 28, 2005, 14:32
Нужно, чтобы у статусбара было несколько полей. Пока единственный путь, что я нашел, это добавить нужное количество QGroupBox, а в них добавить по одному QLabel. Может есть более простой метод? Подскажите пожалуйста.


Название: Re: разбиение statusbar
Отправлено: Zmey от Июль 28, 2005, 15:31
Цитата: "L.Marvell"
Нужно, чтобы у статусбара было несколько полей. Пока единственный путь, что я нашел, это добавить нужное количество QGroupBox, а в них добавить по одному QLabel. Может есть более простой метод? Подскажите пожалуйста.

Не добавлять QGroupBox вообще, а добавить в статус бар нужное кол-во QLabel.


Название: Re: разбиение statusbar
Отправлено: L.Marvell от Июль 28, 2005, 15:58
Цитата: "Zmey"
Цитата: "L.Marvell"
Нужно, чтобы у статусбара было несколько полей. Пока единственный путь, что я нашел, это добавить нужное количество QGroupBox, а в них добавить по одному QLabel. Может есть более простой метод? Подскажите пожалуйста.

Не добавлять QGroupBox вообще, а добавить в статус бар нужное кол-во QLabel.

Да, но с QGroupBox с параметром setFlat(true) выглядит более приятно, поскольку разные данные находятся в разных "коморках".


Название: Re: разбиение statusbar
Отправлено: Sergeich от Июль 28, 2005, 16:32
Цитата: "L.Marvell"

Да, но с QGroupBox с параметром setFlat(true) выглядит более приятно, поскольку разные данные находятся в разных "коморках".

Того же эфекта можно добиться с помощью QLabel::setFrameShape и QLabel::setFrameShadow


Название: Re: разбиение statusbar
Отправлено: L.Marvell от Июль 28, 2005, 16:48
Цитата: "Sergeich"
Цитата: "L.Marvell"

Да, но с QGroupBox с параметром setFlat(true) выглядит более приятно, поскольку разные данные находятся в разных "коморках".

Того же эфекта можно добиться с помощью QLabel::setFrameShape и QLabel::setFrameShadow

Да, как-то я пропустил эту возможность. Спасибо.


Название: разбиение statusbar
Отправлено: mindz_eye от Май 29, 2006, 15:23
Наткнулся на небольшую странность - QLabel при добавлении в статус бар по умолчанию обрамляется рамкой. Применение setFrameShape( QFrame::NoFrame ) не помогает - рамка остается на месте.
Может кто-нибудь сталкивался?


Название: разбиение statusbar
Отправлено: nEoN от Май 30, 2006, 08:21
Цитата: "mindz_eye"
Наткнулся на небольшую странность - QLabel при добавлении в статус бар по умолчанию обрамляется рамкой. Применение setFrameShape( QFrame::NoFrame ) не помогает - рамка остается на месте.
Может кто-нибудь сталкивался?

Если заглянуть в QStatusBar::paintEvent, то можно увидеть, что QStatusBar всегда рисует рамки вокруг всех вставленных в него элементов.
Изменить это можно реализацией своего paintEvent, но это не очень здорово.

Ещё один вариант - когда есть необходимость поместить несколько элементов на статусбар, то можно  все эти элементы поместить сперва в QWidget, а затем этот QWidget поместить в QStatusBar. В этом случае будет одна общая рамка для группы элементов.


Название: разбиение statusbar
Отправлено: alex0303 от Май 30, 2006, 08:45
Тоже бодался, потом QHBox задействовал, но ИМХО криво это тролтеч сделал, кому надо рамку легко сделать могут, а вот убрать её гемора больше.


Название: разбиение statusbar
Отправлено: mindz_eye от Май 30, 2006, 12:13
Проблема в том, что если сделать общую рамку, то она будет исчезать во время появления подсказок и временных сообщений, что не очень эстетично смотрится)) Может есть способ обрамлять и их рамкой? Ну, кроме выдачи этих сообщений вручную...