crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Редактор графов
l0ki
  опции профиля:
сообщение 20.2.2011, 15:32
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 25.2.2010
Пользователь №: 1485

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте, мне предстоит реализовывать графовый редактор (вообще редактор диаграмм Хассе, но это детали) на qt. Функциональность пока простая пользователь мышкой может вводить/удалять вершины и ребра и перетаскивать их. Ну и в последствии надо их как-то сохранять/загружать будет.

Так как сделать мне это надо бы в довольно сжатые сроки, то обращаюсь к вам за помощью, что использовать, чтобы это все реализовать? До этого я на qt делал только программы с таблицами, кнопками и всяким таким, не умею пока работать с рисованием.

В общем вопросы следующие:

1. Какие классы qt необходимо использовать для отрисовывания графики и взаимодействия с пользователем.
2. Как поудобнее хранить внутреннее представление графа, стоит ли использовать booost::graph?
3. Стоит ли приплетать сюда svg или это мне не подойдет?

Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.2.2011, 16:02
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


посмотри демку %QTDIR%\demos\pathstroke
там есть вершинки, которые перетаскиваются мышкой
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
l0ki
  опции профиля:
сообщение 20.2.2011, 16:38
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 25.2.2010
Пользователь №: 1485

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 20.2.2011, 16:02) *
посмотри демку %QTDIR%\demos\pathstroke
там есть вершинки, которые перетаскиваются мышкой

Спасибо, поизучаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
l0ki
  опции профиля:
сообщение 22.2.2011, 11:12
Сообщение #4


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 25.2.2010
Пользователь №: 1485

Спасибо сказали: 0 раз(а)




Репутация:   0  


Подскажите еще кое-что. У меня будет некий класс холст, на котором рисуется всякое. Я наследую его от QLabel, скажем, переопределяю события мыши и т. д. А как мне сделать, чтобы этот холст отображался в qt designer как и остальные виджеты, чтобы я могу его там перетаскивать, добавлять в лейауты главного окна и прочее?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.2.2011, 16:26
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(l0ki @ 22.2.2011, 13:12) *
Я наследую его от QLabel,
используй графическое представление (как и в демке), в нём за отображение отвечает представление (QGraphicsView), его и положишь в дизайнере.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
l0ki
  опции профиля:
сообщение 3.4.2011, 18:46
Сообщение #6


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 25.2.2010
Пользователь №: 1485

Спасибо сказали: 0 раз(а)




Репутация:   0  


Подниму тему еще раз.

Подскажите как сделать, чтобы для виджета, на котором я рисую (наследованный от label или graphicview) при увеличении размера холста появлялись полосы прокрутки, я пытаюсь запихнуть этот виджет в qScrollArea в дизайнере, но он все равно не прокручивает его, хотя я и указал минимальные размеры больше scrollArea.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
l0ki
  опции профиля:
сообщение 3.4.2011, 19:27
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 25.2.2010
Пользователь №: 1485

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вообще, я примерно добился чего хотел, но некоторые моменты мне все равно непонятны.

Если я свой виджет для рисования (gPainter) размещаю где-нибудь на форме, а также размещаю на форме QScrollArea (sa), а потом в коде пишу

    ui->sa->setWidget(ui->gPainter);

То виджет появляется внутри scrollArea и прокручивается.

Если же я в дизайнере на форме перетаскиваю виджет внутрь ScrollArea, не меняя код, то у меня все это не компилируется и выдается:
ASSERT: "d" in file ..\..\include/QtCore/../../src/corelib/tools/qscopedpointer.h, line 112
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.


Немного не понимаю почему так происходит. Нельзя передавать в QScrollArea::setWidget() виджет, который на форме внутри scrollArea?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 4.4.2011, 11:54
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


Цитата(l0ki @ 3.4.2011, 19:46) *
он все равно не прокручивает его, хотя я и указал минимальные размеры больше scrollArea.

нужно нажать на scrollArea и задать компоновщик
про ошибку ничего не могу сказать

Сообщение отредактировал abc - 4.4.2011, 11:54
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 3:51