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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кастомное диалоговое окно  (Прочитано 3965 раз)
onecupofspam
Гость
« : Декабрь 02, 2010, 19:17 »

Господа, с QT работаю пару дней, поиском ответа не нашел.

Пишу приложение под мобильную платформу.
Основная форма - класс на основе QGraphicsView.
В нем есть несколько управляющие элементов, которые должны вызывать диалоговое окно с нестандартным интерфейсом.
Это окно из себя представляет просто прямоугольник с наложенной текстурой и несколькими кнопками (опять же кастомными) на нём.
В будущем в этом окошке могут появиться некие эффекты (анимация).

На основе какого класса создать это окно?
QDialog - насколько я понял толком не дает возможности его кастомизировать.
Или делать его тоже на основе QGraphicsView?

На данный момент я делаю это наследуясь от QGraphicsWidget на который кладу QGraphicsScene, на которой размещаю свои кнопки.
Кнопки делаю полями данного класса, при нажатии посылаю соответствующие сигналы.

И еще, посоветуйте где можно посмотреть подробные описания классов Qt с их предназначением и наиболее частыми ситуациями использования.
Документация - это замечательно, она классная, но чтобы от неё была польза, нужно знать документацию какого класса тебе надо изучить, а тыкать во все более-менее похожее на то что тебе надо в AllClasses удовольствие не из лучших.

Спасибо.

UPDATE:
Тьфу, QGraphicsWidget наоборот, кидается на сцену, а не сцена на него.
Тогда как вариант окошко кидать на основную сцену с заведомо большей Z-координатой (при этом для красоты можно затемнить все что под ним).
Но вопрос остается - на основе чего делать это окно? Чтобы можно было использовать текстуру для фона, и можно было кидать subwidgets?


Если я придумываю велосипед, то ткните в сторону готового)
« Последнее редактирование: Декабрь 02, 2010, 20:11 от onecupofspam » Записан
crossly
Гость
« Ответ #1 : Декабрь 03, 2010, 10:01 »

Цитировать
На данный момент я делаю это наследуясь от QGraphicsWidget на который кладу QGraphicsScene, на которой размещаю свои кнопки.
Кнопки делаю полями данного класса, при нажатии посылаю соответствующие сигналы.
все правильно вы делаете...
Записан
onecupofspam
Гость
« Ответ #2 : Декабрь 03, 2010, 10:19 »

Гм, но насколько я понял из документации, QGraphicsWidget - это класс для объектов которые помещаются НА сцену, а не сцена в них.
А если я не могу поместить на него сцену, то как задать фон, как разместить кнопки и прочее? Только лишь реализовывая paint()?
Записан
crossly
Гость
« Ответ #3 : Декабрь 03, 2010, 10:29 »

а зачем вам сцену кидать на QGraphicsWidget??
Записан
onecupofspam
Гость
« Ответ #4 : Декабрь 03, 2010, 11:21 »

Чтобы к ней применить Brush с нужной текстурой, чтобы на неё кинуть кнопки, а в будущем на ней реализовывать анимацию.
Записан
crossly
Гость
« Ответ #5 : Декабрь 03, 2010, 11:26 »

если вы хотите поместить обычный виджет на QGraphicsScene используйте QGraphicsProxyWidget
Записан
onecupofspam
Гость
« Ответ #6 : Декабрь 03, 2010, 11:37 »

Кажется мы не понимаем друг друга)
Окно моего приложения - это QGraphicsView с QGraphicsScene. к этой сцене применены свои текстуры, свои subwidgets и т.п.
При взаимодействии с некоторыми подвиджетами я хочу вызывать новое окошко. У него свое особое оформление, свои подвиджеты.
Поэтому я думал, что возможно к нему необоходимо прикрепить некую новую сцену, оформление которой так же настроить.

Проблема в том, что я не могу сделать это окошко в виде некоторого виджета (так как на виджет нельзя поместить сцену).
Тогда как его реализовывать? тоже как QGraphicsView? Или отказаться от дополнительной сцены и реализовать его в виде некоторого виджета, задавая оформление в paint() ?
Записан
crossly
Гость
« Ответ #7 : Декабрь 03, 2010, 12:22 »

последний вариант наверное буде предпочтительнее
Записан
onecupofspam
Гость
« Ответ #8 : Декабрь 04, 2010, 22:58 »

Из каких соображений?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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