Зря, конечно, не продвигают. В deprecated оно пока не уходит, но это самая удачная схема кроссплатформенных системных компонентов (какой бы оксюморон это ни был).
Я не нашёл, как обратиться к C++ из конструктора форм. Видимо, придётся по старинке…
И да, для сложных программ QML не годится, и приходится использовать Qt Widgets. Впрочем, то и другое можно комбинировать.
P.S. Посмотрите мой ответ. Порядковый показатель не бывает излишне самоуверенным: если вместо f(x) взять 2f(x) или arctg f(x), ничего не изменится. А для статистического — изменится многое. А может даже вероятность стать больше единицы.
Придумал 3-й вариант интерфейса, самый труднореализуемый, но и самый эффективный: вводим слово, после этого система делает перебор и расставляет в клетках возможные буквы. Щёлкаем на клетке — слово вписано. Если в одной клетке несколько вариантов — пишет «?», по щелчку открывается меню с вариантами букв.
Далее, хороший интеллект должен проверить: а не открылись ли мы? Может ли быть такое, что мы написали КОТ и дали возможность сопернику ввести СКОТ? Такие случаи надо отлавливать.
Я бы интеллект начал вот с чего. Завёл бы бор (хитрую разновидность поискового дерева, см. алгоритм Ахо-Корасик) префиксов длины не менее floor(len/2) (в обратном порядке) и суффиксов (в прямом порядке) словаря (как эффективно этот бор сжать — отдельный вопрос). Каждый узел бора нагружен списком тех слов, которые имеют этот префикс или суффикс. Делаем перебор по возможным точкам, куда ставить; из точки делаем перебор по имеющимся буквам, руководствуясь бором и битовым массивом: использована точка или нет.
Если нарвались на нагруженную вершину, для каждого слова из списка проверяем, префикс это или суффикс, и ищем на поле недостающую (короткую) часть: например, нашли последовательность ИВС, это даёт слова СВИНЬЯ, СВИНЕЦ, СВИНИНА (а вот СВИНОМАТКА уже не будет — вписаны только «длинные» префиксы/суффиксы). Находим на поле суффикс ЕЦ и со спокойной душой вписываем Н, получаем слово СВИНЕЦ.
> Подскажите пожалуйста, а как составить слово из отдельных выбранных ячеек?
На каком уровне? На уровне интеллекта? На уровне интерфейса? На уровне управления вводом?
На уровне управления вводом — в состояние придётся ввести и тот кусок слова, который выбран игроком. Например, массив из кортежей (X, Y), количество реально задействованных позиций и введённая игроком буква (если есть пустая позиция; по нажатию кнопки «стереть» её придётся занулить, если зануляем ту букву, что ввёл игрок).
На уровне интерфейса есть два варианта ввода, и какой лучше — покажет тестирование на прототипах. 1) Установить букву, затем набрать слово — как на бумаге, зато больше нажатий; 2) Щёлкать на клетках по одной; если попали на пустую — открывается окошечка с буквами алфавита.
На уровне интеллекта это реально сложно, я даже не могу сказать, как сделать прототип, который умеет играть по правилам. А также программу, которая играет на уровне гроссмейстера и её упрощение, которое допускает ошибки и даёт человеку контролируемые шансы на выигрыш.
Тут уже надо переходить на событийное программирование, наладив такую вещь, как «состояние игры». События переводят игру из одного состояния в другое и соотвествующим образом перерисовывают окошко.