Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: UVV от Декабрь 12, 2014, 14:39



Название: QAbstractItemView, один widget поверх другого
Отправлено: UVV от Декабрь 12, 2014, 14:39
Привет.
Хочется при отсутствии данных сделать itemView неактивным (setDisabled) и отобразить метку типа "No connection" или подобную. Кто-нибудь делал подобное? Не понятно пока, как метка впишется в уже используемый layout. Или же в этой хотелке без собственного paintEvent не обойтись?
Спасибо.


Название: Re: QAbstractItemView, один widget поверх другого
Отправлено: Johnik от Декабрь 12, 2014, 14:44
Как вариант QStackedWidget с двумя вложенными виджетами: один ваш QAbstractItemView, второй, например, с QLabel с необходимым текстом.


Название: Re: QAbstractItemView, один widget поверх другого
Отправлено: UVV от Декабрь 12, 2014, 14:50
Как вариант QStackedWidget с двумя вложенными виджетами: один ваш QAbstractItemView, второй, например, с QLabel с необходимым текстом.

Ну StackedWidget уберёт мой view, а хотелка была показывать его неактивным в фоне ) Или я что-то недопонял? )


Название: Re: QAbstractItemView, один widget поверх другого
Отправлено: Johnik от Декабрь 12, 2014, 15:12
нет, все правильно поняли, то и имел ввиду.


Название: Re: QAbstractItemView, один widget поверх другого
Отправлено: vregess от Декабрь 12, 2014, 15:41
Можно поместить внутрь view свой виджет и позиционировать его по событию изменеия размера.

Псевдокод:

Код
C++ (Qt)
 
class MyWidget: public QWidget
{
public:
 explicit MyWidget(QWidget *parent);
 
...
 
 void eventFilter(QObject *obj, QEvent *event)
 {
    // change position/size
 }
 
....
 
w = new MyWidget(itemView);
itemView->installEventFilter(w);
 

Вот Верес что-то делал похожее Накрываем виджеты стеклом. Эффект блокировки виджета. (http://www.prog.org.ru/topic_24835_0.html)

Я для таких целей написал специальный класс, который показывает с анимацией что-нибудь поверх другого виджета.
Код
C++ (Qt)
layer = new WidgetLayer(itemView);
layer->setWidget(myLabel);
layer->animateShow();
 



Название: Re: QAbstractItemView, один widget поверх другого
Отправлено: UVV от Январь 09, 2015, 17:23
Спасибо. Сейчас выделю общие компоненты и тоже свой виджет забацаю.


Название: Re: QAbstractItemView, один widget поверх другого
Отправлено: UVV от Январь 13, 2015, 12:13

Я для таких целей написал специальный класс, который показывает с анимацией что-нибудь поверх другого виджета.
Код
C++ (Qt)
layer = new WidgetLayer(itemView);
...
layer->animateShow();
 


Спасибо ещё раз. Поменял базовый класс на QLabel и вынес значение прозрачности в члены класса.