如何在 QT 中制作二维数组?
Posted
技术标签:
【中文标题】如何在 QT 中制作二维数组?【英文标题】:How to make a 2d Array in QT? 【发布时间】:2014-03-10 20:58:11 【问题描述】:您好,我的问题很简单,我只是在 QT 论坛上问过,但没有人回答我。
我只是想制作一个 QLabel 的 2D 数组,有人可以帮帮我吗,我读到的所有内容,他们使用动态向量,如下所示:
<QVector <Data_Type>>
我不能使用它(我的项目还不必使用它,我知道的废话规范),所以我必须使用像 C++ 或 C 中的 2D。 编辑:我有 2D 数组但不知道如何显示它,我只有这个,不要给我错误:
QWidget *mainWidget = new QWidget;
QLabel **maze;
maze= new QLabel*[x];
for (int i = 0; i < x; i++)
maze[i]= new QLabel[y];
for(int i=0;i<x;i++)
for(int j=0;j<y;j++)
maze[i][j].setPixmap(test);
maze[i][j].move(i*60,j*60);
mainWidget->show();
setCentralWidget(mainWidget);
现在我只想显示图像,一旦我运行项目,没有图像出现,小部件的东西对吗?如何在主窗口中显示?我也需要一个 2D 小部件? 感谢您的宝贵时间。
【问题讨论】:
【参考方案1】:假设 x 和 y 是行数和列数,相应地,您可以简单地做到这一点:
[..]
QGridLayout *grid = new QGridLayout;
for (int i = 0; i < x; i++)
for (int j = 0; j < y; j++)
QLabel *label = new QLabel(this);
label->setPixmap("Path_Of_The_Image");
grid.addWidget(label, i, j);
[..]
【讨论】:
感谢您的回答,但我已经这样做了,我正在尝试使用网格设置位置,但是 QLabel(二维数组)的大小是动态的,我不知道实际尺寸。所以我尝试为这个动态数组设置一个标准位置和窗口周围的边距(显然使用 QGridLayout),但是每次我改变它时,QLabel 之间的空间都会改变(水平和垂直空间),即使我设置了空间它们之间为零。可以使用二维数组吗?以前没人试过吗? @vitaR,请展示你想做什么。有样机吗? 我在做迷宫。我从 .txt 文件中读取迷宫,该项目说,行和列的大小可以在 5 到 15 之间。这根本不是游戏,你有两个角色,一只猫和一只老鼠,他们必须找到出口的路径,您制作逻辑代码来执行此操作,然后您只需使用图像在窗口中显示过程(您不必按任何键,只需重新加载窗口)。我对 QT 很陌生,所以我只想知道一些简单的事情。所以就像我说的,我尝试使用 QGridLayout,但是它们之间的空间,这个布局的位置和边距,不允许我做任何事情。 您好 vitaR,我认为您使用了错误的工具来完成这项工作。 QLabels 不适合显示迷宫组件。改用 QML/Qt Quick:qt-project.org/doc/qt-5/qtsensors-maze-example.html以上是关于如何在 QT 中制作二维数组?的主要内容,如果未能解决你的问题,请参考以下文章