crossplatform.ru

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

> Идеологически верный выбор инструментов.
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 объявлен в файле с константнами, типа того:
Раскрывающийся текст

#pragma once
#ifndef QFGUI_QFROST_H
#define QFGUI_QFROST_H

namespace qfgui
{

struct QFrost {
    public:
    /**
     * Расстояние в единицах сцены между узлами сетки,
     * ставится в соответствие одной единице чертежа (безотносительно реальных
     * единиц измерения).
     * @warning не следует путать сетку с видимой сеткой!
     */
    static const unsigned int unitsInGridStep = 10;

    /// Сколько метров в одной единице чертежа
    static const double metersInUnit;

    /// Перечисление типов инструментов
    enum ToolType {
        /// Создавалка ячеек
        cell_creator,
        /// Создавал граничных условий
        boundary_creator,
        /// Прямоугольное выделение
        rectangle_selection,
        /// Эллиптическое выделение
        ellipse_selection
    };
};

}

#endif // QFGUI_QFROST_H



Ну а файл с константами подключается там, где надо. Так что не страшно.

Кстати, всё почему-то заработало без ковыряния с Q_ENUMS.

Сообщение отредактировал Obey-Kun - 3.4.2010, 4:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Obey-Kun   Идеологически верный выбор инструментов.   2.4.2010, 2:29
- - Litkevich Yuriy   Цитата(Obey-Kun @ 2.4.2010, 6:29) И ...   2.4.2010, 4:06
- - Obey-Kun   фублин. посмотрел на то, как панель с инструментам...   2.4.2010, 17:56
- - Litkevich Yuriy   Цитата(Obey-Kun @ 2.4.2010, 21:56) Т...   3.4.2010, 1:31
- - Obey-Kun   Речь шла об этом? CMakeFiles/../....   3.4.2010, 1:56
- - Litkevich Yuriy   вообще-то ошибки компиляции быть не должно, просто...   3.4.2010, 2:22
- - Obey-Kun   я балбес, декларэйшн не написал теперь заработало ...   3.4.2010, 3:17
- - Litkevich Yuriy   Цитата(Obey-Kun @ 3.4.2010, 7:17) QO...   3.4.2010, 3:24
- - Obey-Kun   Экспериментировал. В MainWindow было: area = new ...   3.4.2010, 3:26
- - Litkevich Yuriy   мало того объявления родительского сигнала в дочер...   3.4.2010, 3:26
- - Obey-Kun   Цитатавообще соединять в дочернем объекте сигнал р...   3.4.2010, 3:28
- - Litkevich Yuriy   Цитата(Obey-Kun @ 3.4.2010, 7:28) то...   3.4.2010, 3:46
- - Obey-Kun   Цитатану слот - функция, просто в отличие от функц...   3.4.2010, 3:56
- - Litkevich Yuriy   при таком подходе тебе нужно будет сделать видимым...   3.4.2010, 4:03
- - Obey-Kun   Цитатапри таком подходе тебе нужно будет сделать в...   3.4.2010, 4:11


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


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




RSS Текстовая версия Сейчас: 27.11.2024, 6:20