качестве изучения работы с сигналами и слотами, контектное меню и рисование. Назначение класса нарисовать координатную сетку исходя из заданных размеров. Вот реализации класса (https://pastebin.com/uBYSrJC5). Скажу, что какой хотел видеть результат, я его увидел. Отрабатывается все нормально (с моей не профессиональной точки видения ).
В книге Шлее М. Qt 5.10. Профессиональное программирование на C++. — СПб.: 2018 сказано, что сигналы могут передавать различную информацию через параметры, а слоты ее могут принимать. Главное при присоединении сигналов со слотами, передающими значения, следить за совпадением их типов.
Так вот в моем классе куча слотов void setSize... реализация которых абсолютно одинаковая отличия лишь в параметрах QSize(). А это плохая манера дублирование кода.
Делал один слот void setSizeSetka(QSize), но вот как отправить сигнал с информацией о новом размере QSize из контекстного меню? Модифицировать QAction, определить свой сигнал и отправлять его вместо triggered()?
Или есть другие варианты, которые я пока не увидел или не разобрался?
привязывай к экшонам лямбды, а в них вызывай setSetkaSize(const QSize& size);
переименуйте setka в grid, пожалуйста
И еще: - сделай единственную реализацию setGridSize(rows, cols), а то сейчас копипаста - создай массив с размерами сеток, и проходись по нему добавляя в контекстное меню и присоединяя к слоту - вместо лямбд я предпочитаю std::bind, например std::bind(SetkaOrdinat::setGridSize, this, 200, 200). Но это дело вкуса
Обсуждают сегодня