Russian Qt Forum
Мая 26, 2025, 07:47
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
[РЕШЕНО] Программная разработка доски Судоку
Страниц:
1
2
[
3
]
4
5
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: [РЕШЕНО] Программная разработка доски Судоку (Прочитано 38848 раз)
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Программная разработка доски Судоку
«
Ответ #30 :
Мая 30, 2012, 21:26 »
ufna
, красиво выглядит
groupbox полно=) если не ошибаюсь и для поля игры тоже groupbox используется)
точнее, поле игры внутри groupbox находится)
и поле создается через переопределенный paintEvent?)
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Программная разработка доски Судоку
«
Ответ #31 :
Мая 30, 2012, 21:30 »
Никогда не слышал о такой игре. Но тоже против таблицы - она хороша когда кол-во ячеек переменно и/или непредсказуемо. А если их число жестко фиксировано (и относительно невелико) - то массив/контейнер указателей на виджеты - и вся любовь.
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Программная разработка доски Судоку
«
Ответ #32 :
Мая 30, 2012, 21:35 »
Igors
, и размещать эти самые виджеты с помощью layout?
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Программная разработка доски Судоку
«
Ответ #33 :
Мая 30, 2012, 21:45 »
Вы меня запутали
Дело в том что генератор карт для этой игры у меня есть - это самое сложное в этом проекте, осталось сделать интерфейс - самое простое, относительно этого генератора, и хочется выбрать самый простой работающий способ
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
ufna
Гость
Re: Программная разработка доски Судоку
«
Ответ #34 :
Мая 30, 2012, 21:47 »
Цитата: gil9red от Мая 30, 2012, 21:26
ufna
, красиво выглядит
groupbox полно=) если не ошибаюсь и для поля игры тоже groupbox используется)
точнее, поле игры внутри groupbox находится)
и поле создается через переопределенный paintEvent?)
поле игры рисуется целиком вручную в пейнт эвенте, включая "рамочку". Групбоксы там только для меню.
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Программная разработка доски Судоку
«
Ответ #35 :
Мая 30, 2012, 21:57 »
Понятно, но если делать вручную судоку то при рисовании поля проблем не возникнет, зато далее будет очень весело: нажатую ячейку нужно выделить, для этого поле разделяем в виде сетки, отлавливаем куда тыкнул пользователь, зная координаты, выясняем на какую ячейку он попал, потом можно и нужно для ячейки подобрать значение (в судоку каждая ячейка имеет значение от 1-9), значит тоже самое что и с определением ячейки по координатам. Если мы захотим изменить размер окна, тут будет проще - используя метод scale() рисовальщика, и зная ширину/высоту окна, можем это осуществить
Но я не сторонник самоистезаний, если есть другой путь, хотя и сам не уверен, что другой путь приведет к цели, но этот способ гарантирует полный контроль над полем и возможность сделать на нем все что придумается
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
ufna
Гость
Re: Программная разработка доски Судоку
«
Ответ #36 :
Мая 30, 2012, 22:01 »
Ну вообще-то все выше перечисленные вещи делаются за час, а если ранее не делал - то часа может за три, зато опыта - сразу гуд
там еще вопросы некоторые есть которые всплывут ))
а так есть еще GVC
но на самом деле.. см. ответ Igors. делай виджеты, накидай их на лейаут и все. Самый быстрый и грубый путь.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Программная разработка доски Судоку
«
Ответ #37 :
Мая 30, 2012, 22:05 »
Цитата: gil9red от Мая 30, 2012, 21:35
Igors
, и размещать эти самые виджеты с помощью layout?
А чего нет?
Цитата: gil9red от Мая 30, 2012, 21:57
..зато далее будет очень весело: нажатую ячейку нужно выделить, для этого ..
Да, есть такие заботы, но они не так уж велики, рисовать все одном paint имеет свои преимущества.
Записан
Bepec
Гость
Re: Программная разработка доски Судоку
«
Ответ #38 :
Мая 30, 2012, 22:31 »
Блин >.<
Какие все умные. Вроде и QPainter с полной отрисовкой приплели.
Да ещё и посоветовали виджетов накидать тупо(штук 200/300 получится).
Вот этого я не понимаю. Чем плох TableView?
По отрисовке - тот же самый QPainter.
По скорости изменения (допустим перемещение ячеек и прочая) гораздо быстрее и удобнее самописного паинтера.
200-300 виджетов - а памяти у вас мало скушается? Или много? Или без разницы?
Помоему View (любой) как раз подходит для этих целей. Вручную отрисовывать конечно хорошо, но... В любом случае у вас получится model-view, который будет брать данные и отрисовывать в соответствии.
И тут уже вопрос гибкости встаёт. Камбала же вроде за гибкость (по теме "MoveToThread" сужу).
Гибкости со своим Паинтером - никакой. Каждая правка - правка всей структуры. К тому времени уже запутанной.
А придёт всё к чему? К разделению отрисовки и данных. Вот и model-view.
PS
Цитировать
"Но тоже против таблицы - она хороша когда кол-во ячеек переменно и/или непредсказуемо. А если их число жестко фиксировано (и относительно невелико) - то массив/контейнер указателей на виджеты - и вся любовь."
- Ответь Igors пожалуйста на вопрос, что лучше - 200-300 виджетов в группе, или 1 model-View?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Программная разработка доски Судоку
«
Ответ #39 :
Мая 30, 2012, 23:09 »
Цитата: Bepec от Мая 30, 2012, 22:31
Камбала же вроде за гибкость (по теме "MoveToThread" сужу).
я в темах про потоки вообще не пишу (или в этой писал?..). а тут я за таблицу как за доступное решение "из коробки".
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ufna
Гость
Re: Программная разработка доски Судоку
«
Ответ #40 :
Мая 30, 2012, 23:16 »
9х9 вроде как 81 виджет, откуда 200-300?
отрисовка в пеинтере имеет свои плюсы, не всегда модел/вью "встроенные" подходят. Но это уже для отдельной темы разговор.
Записан
Bepec
Гость
Re: Программная разработка доски Судоку
«
Ответ #41 :
Мая 31, 2012, 06:51 »
2ufna - Для познавательной работы с Qt нужен и painter и model-View.
К сожалению я про судоку знаю мало. Там разве поле не может быть больше?
Цитата: Википедия
В последнее время появились модификации большего размера, чем 9 на 9 клеток. Например, существуют судоку с размерами 12×12 или даже 16×16, предназначенные для опытных игроков.
Table гибче и манёвреннее. Можно на лету менять. И самое то на таком примере изучить Model-View. А уж потом оно точно пригодится
Записан
Krysk
Гость
Re: Программная разработка доски Судоку
«
Ответ #42 :
Мая 31, 2012, 08:25 »
Я помню на Qt3 текстовый редактор делал каждую буковку сам отрисовывал, а также: выделение, подсветка синтаксиса и п.р... собственный QTextEdit;)
Сейчас я предпочитаю использовать qml + QGraphicsScene жаль что нокиа тормозят c qt ведь кодить на qml в 100500 раз дешевле и проще чем с хмл + java в том же андроид
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Программная разработка доски Судоку
«
Ответ #43 :
Мая 31, 2012, 08:45 »
Цитата: Bepec от Мая 30, 2012, 22:31
Ответь Igors пожалуйста на вопрос, что лучше - 200-300 виджетов в группе, или 1 model-View?
Model-view это всего лишь разделение UI и структур данных. Это можно обеспечить и с массивом виджетов и с рисованием в paint. Не вижу что выигрывается при таблице если данные статичны - наоборот, забот только больше. Хотя впрочем - дело вкуса
Записан
Bepec
Гость
Re: Программная разработка доски Судоку
«
Ответ #44 :
Мая 31, 2012, 08:59 »
Я как то попробовал создать таблицу в 400 на 400 ячеек и групбокс 400 на 400 label. Лейблы тормозили ужасно. Таблица спокойно работала.
Model-View не только разделение ui. Там получается 1 виджет (ну пусть 3), с параметрами отображения. А 200-300 виджетов со всеми их параметрами и характеристиками и ненужными в данном случае возможностями проигрывают во всём. Скорости отображения, занимаемой памяти и прочему.
Я бы сказал, что выбор у автора (если он хочет) есть между painter'ом и Model-View. И в том, и в этом случае получится model-View. В 1 случае рукописная. Во 2 случае уже готовая, "из коробки".
Записан
Страниц:
1
2
[
3
]
4
5
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...