如何在 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 中制作二维数组?的主要内容,如果未能解决你的问题,请参考以下文章

swift 如何在swift中制作一个二维数组

Qt中如何读取csv文件到二维数组

在c ++ Qt中将二维向量/二维数组显示为简单图形

如何在 Java 中复制二维数组?

JAVA中Vector怎样存放一个动态的二维数组

试图制作一个二维数组列表