Russian Qt Forum
Май 06, 2024, 16:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4 5   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Программная разработка доски Судоку  (Прочитано 36035 раз)
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #30 : Май 30, 2012, 21:26 »

ufna, красиво выглядит Улыбающийся
groupbox полно=) если не ошибаюсь и для поля игры тоже groupbox используется)
точнее, поле игры внутри groupbox находится)
и поле создается через переопределенный paintEvent?)
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #31 : Май 30, 2012, 21:30 »

Никогда не слышал о такой игре. Но тоже против таблицы - она хороша когда кол-во ячеек переменно и/или непредсказуемо. А если их число жестко фиксировано (и относительно невелико) - то массив/контейнер указателей на виджеты - и вся любовь.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #32 : Май 30, 2012, 21:35 »

Igors, и размещать эти самые виджеты с помощью layout?
Записан

gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #33 : Май 30, 2012, 21:45 »

Вы меня запутали  Непонимающий
Дело в том что генератор карт для этой игры у меня есть - это самое сложное в этом проекте, осталось сделать интерфейс - самое простое, относительно этого генератора, и хочется выбрать самый простой работающий способ Улыбающийся
Записан

ufna
Гость
« Ответ #34 : Май 30, 2012, 21:47 »

ufna, красиво выглядит Улыбающийся
groupbox полно=) если не ошибаюсь и для поля игры тоже groupbox используется)
точнее, поле игры внутри groupbox находится)
и поле создается через переопределенный paintEvent?)

поле игры рисуется целиком вручную в пейнт эвенте, включая "рамочку". Групбоксы там только для меню.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #35 : Май 30, 2012, 21:57 »

Понятно, но если делать вручную судоку то при рисовании поля проблем не возникнет, зато далее будет очень весело: нажатую ячейку нужно выделить, для этого поле разделяем в виде сетки, отлавливаем куда тыкнул пользователь, зная координаты, выясняем на какую ячейку он попал, потом можно и нужно для ячейки подобрать значение (в судоку каждая ячейка имеет значение от 1-9), значит тоже самое что и с определением ячейки по координатам. Если мы захотим изменить размер окна, тут будет проще - используя метод scale() рисовальщика, и зная ширину/высоту окна, можем это осуществить Улыбающийся
Но я не сторонник самоистезаний, если есть другой путь, хотя и сам не уверен, что другой путь приведет к цели, но этот способ гарантирует полный контроль над полем и возможность сделать на нем все что придумается Улыбающийся
Записан

ufna
Гость
« Ответ #36 : Май 30, 2012, 22:01 »

Ну вообще-то все выше перечисленные вещи делаются за час, а если ранее не делал - то часа может за три, зато опыта - сразу гуд Улыбающийся там еще вопросы некоторые есть которые всплывут ))

а так есть еще GVC  Строит глазки

но на самом деле.. см. ответ Igors. делай виджеты, накидай их на лейаут и все. Самый быстрый и грубый путь.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #37 : Май 30, 2012, 22:05 »

Igors, и размещать эти самые виджеты с помощью layout?
А чего нет?

..зато далее будет очень весело: нажатую ячейку нужно выделить, для этого ..
Да, есть такие заботы, но они не так уж велики, рисовать все одном paint имеет свои преимущества.
Записан
Bepec
Гость
« Ответ #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
Джедай : наставник для всех
*******
Online Online

Сообщений: 4727



Просмотр профиля WWW
« Ответ #39 : Май 30, 2012, 23:09 »

Камбала же вроде за гибкость (по теме "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
Гость
« Ответ #40 : Май 30, 2012, 23:16 »

9х9 вроде как 81 виджет, откуда 200-300?

отрисовка в пеинтере имеет свои плюсы, не всегда модел/вью "встроенные" подходят. Но это уже для отдельной темы разговор.
Записан
Bepec
Гость
« Ответ #41 : Май 31, 2012, 06:51 »

2ufna - Для познавательной работы с Qt нужен и painter и model-View.

К сожалению я про судоку знаю мало. Там разве поле не может быть больше?

Цитата: Википедия
В последнее время появились модификации большего размера, чем 9 на 9 клеток. Например, существуют судоку с размерами 12×12 или даже 16×16, предназначенные для опытных игроков.

Table гибче и манёвреннее. Можно на лету менять. И самое то на таком примере изучить Model-View. А уж потом оно точно пригодится Подмигивающий
Записан
Krysk
Гость
« Ответ #42 : Май 31, 2012, 08:25 »

Я помню на Qt3 текстовый редактор делал каждую буковку сам отрисовывал, а также: выделение, подсветка синтаксиса и п.р... собственный QTextEdit;)

Сейчас я предпочитаю использовать qml + QGraphicsScene жаль что нокиа тормозят c qt ведь кодить на qml в 100500 раз дешевле и проще чем с хмл + java в том же андроид Грустный
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #43 : Май 31, 2012, 08:45 »

Ответь Igors пожалуйста на вопрос, что лучше - 200-300 виджетов в группе, или 1 model-View?
Model-view это всего лишь разделение UI и структур данных. Это можно обеспечить и с массивом виджетов и с рисованием в paint. Не вижу что выигрывается при таблице если данные статичны - наоборот, забот только больше. Хотя впрочем - дело вкуса
Записан
Bepec
Гость
« Ответ #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   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.