qt - 如何制作 9*9 地图,我可以在其中使用 Qt5.12.1 在某些网格中写入数字?
问题描述
我刚开始学习Qt,我打算写一个数独程序。所以我需要一个 9*9 的地图,我可以在其中在某些网格中输入数字。我已经使用 QPainter 绘制了 9*9 的地图,但我无法在其网格中输入数字。如何解决这个问题? 如果我想要一个新的 9*9 地图,其中一些数字不能在其中修改,而在其他网格中我可以自由输入数字,我该怎么办?非常感谢!
解决方案
我也可以使用 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);
}
}
推荐阅读
- javascript - OnClick 键盘中的 Tab 按钮未突出显示 DOM 中的所有按钮或超链接
- python - 无法在 macOS Catalina 上安装 PyQt4
- sql - 没有聚合的数据透视表
- c++ - 包括模块防护
- powershell - Connect-VIServer 失败
- python - 将文件从 src 文件夹导入到 test 文件夹
- mysql - MySql FK 问题
- swift - 使用用户手势更改其值时高度卡顿
- c# - Rest Service Endpoint 设计:为什么要使用多个键?
- citrus-framework - Citrus 框架 - SFTP 服务器