如何制作9 * 9地图,以便我可以使用Qt5.12.1在某些网格中写数字?

时间:2019-03-15 13:59:56

标签: qt sudoku

我刚刚开始学习Qt,我打算编写一个数独程序。 所以我需要有一个9 * 9的地图,可以在某些网格中输入数字。我已经使用QPainter绘制了9 * 9的地图,但是我无法在其网格中输入数字。如何解决该问题? 如果我要创建一个新的9 * 9地图,其中包含一些无法修改的数字,而在其他网格中,我可以自由输入数字,该怎么办? 非常感谢你!

1 个答案:

答案 0 :(得分:0)

Id也与QLineEdits一起使用,然后仅禁用预设的。

这应该为您提供一个起点(注意:在此示例中,我已向mainWindow添加了一个简单的gridLayout):

  // 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);
    }
}