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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: toolbar и widget  (Прочитано 6897 раз)
nvek
Гость
« : Февраль 22, 2017, 06:49 »

Надо чтобы actionы в тулбаре становились активными и неактивными если в виджете есть чтолибо/нет ничего
какой сигнал в виджете показывает, заполнен чем либо виджет или нет?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Февраль 22, 2017, 07:31 »

Наверное, можно реализовать:
Цитировать
[virtual protected] void QObject::childEvent(QChildEvent *event)
This event handler can be reimplemented in a subclass to receive child events. The event is passed in the event parameter.
QEvent::ChildAdded and QEvent::ChildRemoved events are sent to objects when children are added or removed.
Записан
nvek
Гость
« Ответ #2 : Февраль 22, 2017, 08:08 »

Охото бы просто соединить этот слот с сигналом
connect(treeWidget, &QTreeWidget::childEvent, disconnectAct, &QAction::setEnabled);
что то типо такого, конечно это не будет работать
в примере qt там виджет textedit и у него сигнал copyavalible(или как то так)
в коннекте сразу же соединяет со скоим актионом
Записан
nvek
Гость
« Ответ #3 : Февраль 22, 2017, 08:15 »

Неужели нету сигнала который бы определял, если виджет не пустой?Непонимающий
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Февраль 22, 2017, 08:58 »

Неужели нету сигнала который бы определял, если виджет не пустой?Непонимающий

Зачем? Виджет сам по себе не контейнер, а самостоятельная единица интерфейса
Записан

__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Февраль 22, 2017, 09:22 »

Виджеты - это не только сигналы и слоты, но и три, четыре килограмма различных эвентов.
А что мешает переопределить метод и посылать свои сигналы?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #6 : Февраль 22, 2017, 12:16 »

Неужели нету сигнала который бы определял, если виджет не пустой?Непонимающий

а смысл???
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Февраль 22, 2017, 12:53 »

Виджет сам по себе не контейнер,
Может иметь чайлдво - стало быть контейнер

Неужели нету сигнала который бы определял, если виджет не пустой?Непонимающий
А чем не устраивает QEvent::ChildRemoved (ChildAdded)? Ну и в слоте проверить на пустоту. Или цель вообще ничего не делать, а лишь вязать слот-сигнал веники?  Улыбающийся
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #8 : Февраль 22, 2017, 13:02 »

Виджет сам по себе не контейнер,
Может иметь чайлдво - стало быть контейнер

И не поспоришь с таким утверждением Смеющийся
Записан

__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #9 : Февраль 22, 2017, 13:18 »

Код:
И не поспоришь
Ну да Улыбающийся
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #10 : Февраль 22, 2017, 13:59 »

Просто, виджет -- как "кусок бумаги". Можешь на нем нарисовать что-то, можешь сложить в определенную фигуру, можешь из него "сделать пакет" и положить в него что-то, т.е. свойства контейнера есть, ибо он базовый класс всего, но конкретным контейнером не является (делается это неявно -- через парент у детей или через компоновщики (у контейнеров ведь всегда есть определенный набор свойств и методов хотя бы: получение количества элементов, добавление и удаление элементов)). Я это так вижу и прошу не разводить срач, если оно не совпадает с вашим (или создавайте в говорилке тему).

В кнопки тоже можно что-то положить, но в дизайнере они не попадают под группу "Контейнеры", __Heaven__ Улыбающийся
Записан

panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #11 : Февраль 22, 2017, 15:14 »

какой сигнал в виджете показывает, заполнен чем либо виджет или нет?
Исключительно вашего собственного творения сигнал.
Курим Глава 17. Основы архитектуры документ/представление до посинения.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Февраль 23, 2017, 15:32 »

..но конкретным контейнером не является
Может лучше сказать - не является хранилищем как vector и др

В кнопки тоже можно что-то положить..
Кстати - а как же принцип подстановки Лисков?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #13 : Февраль 23, 2017, 17:53 »

В кнопки тоже можно что-то положить..
Кстати - а как же принцип подстановки Лисков?

Принцип подстановки Барбары Лисков
Цитировать
Итак, принцип подстановки Барбары Лисков. Он же Liskov Substitution Principle. Он же LSP. Простыми словами принцип звучит так:
Наследующий класс должен дополнять, а не замещать поведение базового класса.
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #14 : Февраль 23, 2017, 18:29 »

Принцип подстановки Барбары Лисков
Цитировать
Итак, принцип подстановки Барбары Лисков. Он же Liskov Substitution Principle. Он же LSP. Простыми словами принцип звучит так:
Наследующий класс должен дополнять, а не замещать поведение базового класса.
Как же кнопка дополняет ф-ционал базового виджета-контейнера? Засунуть кого-то в кнопку - ничего доброго не выйдет. Выходит что работает для базового не работает для потомка - а по Лисков должно

Впрочем что это за принципы если их не нарушать?  Улыбающийся 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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