Russian Qt Forum
Ноябрь 24, 2024, 18:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QAbstractItemView, один widget поверх другого  (Прочитано 4488 раз)
UVV
Гость
« : Декабрь 12, 2014, 14:39 »

Привет.
Хочется при отсутствии данных сделать itemView неактивным (setDisabled) и отобразить метку типа "No connection" или подобную. Кто-нибудь делал подобное? Не понятно пока, как метка впишется в уже используемый layout. Или же в этой хотелке без собственного paintEvent не обойтись?
Спасибо.
Записан
Johnik
Крякер
****
Online Online

Сообщений: 339


Просмотр профиля
« Ответ #1 : Декабрь 12, 2014, 14:44 »

Как вариант QStackedWidget с двумя вложенными виджетами: один ваш QAbstractItemView, второй, например, с QLabel с необходимым текстом.
Записан
UVV
Гость
« Ответ #2 : Декабрь 12, 2014, 14:50 »

Как вариант QStackedWidget с двумя вложенными виджетами: один ваш QAbstractItemView, второй, например, с QLabel с необходимым текстом.

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

Сообщений: 339


Просмотр профиля
« Ответ #3 : Декабрь 12, 2014, 15:12 »

нет, все правильно поняли, то и имел ввиду.
Записан
vregess
Гость
« Ответ #4 : Декабрь 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);
 

Вот Верес что-то делал похожее Накрываем виджеты стеклом. Эффект блокировки виджета.

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

Записан
UVV
Гость
« Ответ #5 : Январь 09, 2015, 17:23 »

Спасибо. Сейчас выделю общие компоненты и тоже свой виджет забацаю.
Записан
UVV
Гость
« Ответ #6 : Январь 13, 2015, 12:13 »


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


Спасибо ещё раз. Поменял базовый класс на QLabel и вынес значение прозрачности в члены класса.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.15 секунд. Запросов: 22.