gpt4 book ai didi

c++ - 我如何在 Qt Creator 中创建一个复选框矩阵(无文本),并在运行时指定尺寸?

转载 作者:行者123 更新时间:2023-11-30 03:06:46 25 4
gpt4 key购买 nike

好吧,这个问题有点难。我的主窗口有一个部分允许用户指定 x 和 y 尺寸,然后单击“生成”按钮。按下此按钮时,将弹出一个新窗口,其中包含一个没有标签的复选框网格(或矩阵,如果你想称之为矩阵)。网格具有用户指定的尺寸。然后用户将选择他们想要的任何复选框,然后单击“确定”,此时将收集数据,弹出窗口将关闭。

我目前可以正常弹出窗口,但我完全不知道如何创建这个复选框网格。也许使用两个“for”循环?请提供在运行时创建这些框的示例代码。

对于那些好奇的人,这是我正在开发的 GUI 的第一步,它允许用户为计算流体动力学模拟生成域。

最佳答案

你可以这样做:

QVector<QCheckBox*> checkBoxVector;
for(int x = 0; x < 12; ++x){
for(int y = 0; y < 12; ++y){
checkBoxVector.append(new QCheckBox(this));
checkBoxVector.last()->setGeometry(x * 20, y * 20, 20, 20);
}
}

您想将指向新创建项目的指针存储在某个容器类中,以便稍后使用它们(例如销毁它们)。

这个例子有点过于简单了。您将不得不妥善销毁对象。使用智能指针 vector 将使这段代码更加健壮。尽管在这种情况下,由于所有复选框都是窗口或父窗口小部件(在我的示例中为 this 指针)的子窗口,它们将与父窗口一起被销毁。所以只要你只展示一次然后销毁父级,你就应该是安全的。

当然,通过这种方式(只有一个 vector ),您会以某种方式丢失网格的二维。如果您想按位置访问单个元素,则必须对 x 和 y 进行一些简单的计算。

或者,您可以使用两个 vector ,第一个 vector 保存行,第二个 vector 保存指向复选框的指针。但这同样会使代码稍微复杂一些。

关于c++ - 我如何在 Qt Creator 中创建一个复选框矩阵(无文本),并在运行时指定尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6337584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com