Идеологически верный выбор инструментов. |
Здравствуйте, гость ( Вход | Регистрация )
Идеологически верный выбор инструментов. |
Obey-Kun |
2.4.2010, 2:29
Сообщение
#1
|
Студент Группа: Участник Сообщений: 96 Регистрация: 24.3.2010 Пользователь №: 1556 Спасибо сказали: 3 раз(а) Репутация: 0 |
Есть mainwindow. Там тулбары с экшнами, менюшки, указатель на мой QGraphicsView.
В моём унаследованном от QGraphicsView виджете есть Tool *m_tool. Tool — абстрактный класс инструмента (всякие выделения, создание наборов итемов в сцене и т. п). Во вью также есть enum'ный флаг выбранного инструмента. В зависимости от выбранного флага при нажатии ЛКМ создаётся соответственный инструмент. Так вот. Как идеологически верно менять значения флага выбранного инструмента во вью? Пока видится так: QToolBar'ы по дефолту испускают сигнал actionTriggered ( QAction * action ). В мейнвиндове я создам слот, который принимал бы этот сигнал и испускал в зависимости от нажатого экшна что-то типа signalChangeToolType(const MyView::ToolTypeEnum& type). Ну а этот сигнал принимался бы слотом во вью slotSetToolType(const ToolTypeEnum& type), что меняло бы флаг. Это правильно? И кстати, выбор инструмента вообще обычно делают в турбаре или где? P:S: делаю что-то похожее на Cad. |
|
|
Obey-Kun |
3.4.2010, 4:11
Сообщение
#2
|
Студент Группа: Участник Сообщений: 96 Регистрация: 24.3.2010 Пользователь №: 1556 Спасибо сказали: 3 раз(а) Репутация: 0 |
Цитата при таком подходе тебе нужно будет сделать видимым объявление перечисления внутри класса дочернего объекта. Так ведь в любом случае надо делать объявление перечисления видимым как минимум в MainWindow (он испускает сигнал) и во Вью (там слот). У меня enum объявлен в файле с константнами, типа того: Раскрывающийся текст
Ну а файл с константами подключается там, где надо. Так что не страшно. Кстати, всё почему-то заработало без ковыряния с Q_ENUMS. Сообщение отредактировал Obey-Kun - 3.4.2010, 4:12 |
|
|
Текстовая версия | Сейчас: 27.11.2024, 6:20 |