Как сделать карту 9 * 9, в которой я могу писать числа в некоторых сетках, используя Qt5.12.1? - PullRequest
0 голосов
/ 15 марта 2019

Я только начинаю изучать Qt и планирую написать программу для судоку.Поэтому мне нужно иметь карту 9 * 9, в которой я могу вводить числа в некоторых сетках. Я уже использовал QPainter для рисования карты 9 * 9, но я не могу ввести числа в ее сетках. Как решить эту проблему?И если я хочу иметь новую карту 9 * 9 с некоторыми числами, которые нельзя изменить в ней, а в других сетках я могу свободно вводить числа, что мне делать?Большое спасибо!

1 Ответ

0 голосов
/ 15 марта 2019

Id также идет с QLineEdits, а затем просто отключает предустановленные.

это должно дать вам отправную точку (Примечание: я добавил простой gridLayout в mainWindow в этом примере):

  // 2D list of all line-edits - in case you want to access the elements later
QList<QList<QLineEdit*>> numEdits;
QValidator *validator = new QIntValidator(1, 9, this);

for (int idx = 0; idx < 9; ++idx) {
    numEdits.append(QList<QLineEdit*>());

    for (int jdx = 0; jdx < 9; ++jdx) {
        QLineEdit *item = new QLineEdit(this);
        item->setValidator(validator);

        // for pre-set values
        item->setEnabled(false);

        ui->gridLayout->addWidget(item, idx, jdx);

        numEdits[idx].append(item);
    }
}
...