C++ QT将小部件添加到UI anywhere
我正在构建的应用程序应该是创建、销毁和操纵我创建的小部件 问题是我不是在用漂亮的按钮制作一个简单的程序,所有的东西都是对称的,需要均匀的间隔,并通过一个布局来处理,这个布局会自动移动所有的东西并给它们留出空间。 然而,我知道的唯一方法是手动实例化布局并将小部件添加到布局中,但我无法设置它们的坐标 如何简单地实例化我的小部件,并将其添加到项目生成的框架中? 这就是我实例化类的方式,在这种情况下,我会设置自己的参数:C++ QT将小部件添加到UI anywhere,c++,qt,user-interface,widget,C++,Qt,User Interface,Widget,我正在构建的应用程序应该是创建、销毁和操纵我创建的小部件 问题是我不是在用漂亮的按钮制作一个简单的程序,所有的东西都是对称的,需要均匀的间隔,并通过一个布局来处理,这个布局会自动移动所有的东西并给它们留出空间。 然而,我知道的唯一方法是手动实例化布局并将小部件添加到布局中,但我无法设置它们的坐标 如何简单地实例化我的小部件,并将其添加到项目生成的框架中? 这就是我实例化类的方式,在这种情况下,我会设置自己的参数: Tile *tile = new Tile;
Tile *tile = new Tile;
tile->setImg("://Images/placeholderTile.png");
tile->setCol(true);
tile->setGeometry(retX(line),retY(line),50,50);
重申一下,我想将我自己的小部件添加到编辑器之外的框架中(仅通过代码),并能够通过代码在框架中手动移动它们。
我不认为“.addWidget()是一个可以从QFrame访问的方法,但是它们可以是设计器中的子对象,为什么我不能通过代码来实现这一点?每当我尝试手动完成并将它们添加到任何布局时,手动设置小部件位置的任何尝试都不会产生任何效果。我还没有覆盖setGeometry
我解决了我的问题
经过两个小时的不断搜索,我终于找到了答案
我从未想过可以通过代码设置小部件的父级,因为我认为您必须严格地将其添加为其他内容的子级,而不是相反,并声明它应该具有父级
因此,只需添加一行:
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);
另一种方法是编写您自己的布局,以了解对象之间的关系。完成一次之后,编写自定义布局并不是那么难。我解决了我的问题。但是,由于重复率低,我无法将其作为答案提交,所以我将其添加到我的问题中。
class Tile : public QWidget {
...
public:
explicit Tile(QWidget * parent = 0) : QWidget(parent) { ... }
};