gpt4 book ai didi

c++ - QT 在任何地方向 UI 添加小部件

转载 作者:行者123 更新时间:2023-11-28 02:44:46 25 4
gpt4 key购买 nike

我正在构建的应用程序应该创建、销毁和操作我创建的小部件

问题是我不是制作一个带有漂亮按钮的简单程序,其中所有内容都是对称的并且需要均匀间隔并通过布局处理,该布局将自动移动周围的所有内容并隔开它。然而,我知道的唯一方法是手动实例化布局并将小部件添加到其中,但是我无法设置它们的坐标

我怎样才能简单地实例化我的小部件,并将它添加到项目生成的框架中?这就是我实例化我的类的方式,在这种情况下,我然后设置自己的参数:

            Tile *tile = new Tile;
tile->setImg("://Images/placeholderTile.png");
tile->setCol(true);
tile->setGeometry(retX(line),retY(line),50,50);

重申一下,我想将我自己的小部件添加到编辑器外部的框架(仅通过代码),并能够通过代码手动将它们移动到框架周围。我没有看到“.addWidget() 作为可从 QFrame 访问的方法,但它们可以是设计器中的子项,为什么我不能通过代码执行此操作?每当我尝试手动执行并将它们添加到任何布局,我为手动设置小部件位置所做的任何尝试都没有做任何事情。我没有覆盖 setGeometry

我解决了我的问题经过 2 小时的不断搜索,我终于找到了答案我从没想过你可以通过代码设置一个小部件的父级,因为我认为你必须严格地将它作为其他东西的子级添加,而不是相反并声明它应该有一个父级

因此,只需添加以下行:

            tile->setParent(ui->frame);

完全解决了我的问题。我会改回这篇文章,并在明天被本网站允许时提交答案。

感谢那些真正来过的人。我很高兴在那之前我设法修复了它。

最佳答案

您只需将父级传递给小部件的构造函数:

Tile *tile = new Tile(ui->frame); // <-- here
tile->setImg("://Images/placeholderTile.png");
tile->setCol(true);
tile->setGeometry(retX(line),retY(line),50,50);

因为 Tile 是您自己的类,您绝对应该有一个 Qt 风格的、父类获取的 显式 构造函数:

class Tile : public QWidget {
...
public:
explicit Tile(QWidget * parent = 0) : QWidget(parent) { ... }
};

另一种方法是编写您自己的布局,以了解对象之间的关系。完成一次后,编写自定义布局并不难。

关于c++ - QT 在任何地方向 UI 添加小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24794106/

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