QT添加部件到UI的任何地方
QT add widgets to UI anywhere
我正在构建的应用程序应该创建、销毁和操作我创建的小部件
问题是我不是制作一个简单的程序与漂亮的按钮,一切都是对称的,需要均匀间隔,并通过一个布局来处理,将自动移动周围的一切和空间。然而,我所知道的唯一方法是手动实例化布局并添加小部件,但我不能设置它们的坐标
我如何简单地实例化我的小部件,并将其添加到项目生成的框架?这就是我实例化类的方式,在这种情况下,我设置了自己的参数:
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);
既然Tile
是你自己的类,你肯定应该有一个qt风格的,父类显式构造函数:
class Tile : public QWidget {
...
public:
explicit Tile(QWidget * parent = 0) : QWidget(parent) { ... }
};
另一种方法是编写自己的布局,该布局将知道对象之间的关系。这样做一次之后,编写自定义布局就不是那么难了。
相关文章:
- 如何在MS Visual Studio 2019中运行QT UI
- 如何处理使用.ui文件生成的.h文件
- 根据变量使Qt UI中的复选框为已选中/未选中
- 一旦双簧管录制开始,主 UI 线程就会被阻止
- Qt Quick,如何更改 Ui 源代码?
- QWidget UI 在使用 QQuickWidget 时冻结
- 在 3ds Max 中更新进度条后,环境和效果 UI 不刷新
- 是否有通用方法可以找到任何以 null 结尾的字符串的长度?
- Qt - QQuickWidget setSource without freezing UI
- MFC/C++ ComboBox:禁用下拉列表关闭和打开(UI 冻结)的绘制
- Qt5 ui,多个窗口:如何从窗口 1 访问窗口 2 中的 UI 对象
- QtConcurrent - 在发布到 UI 线程的数千个结果中保持 GUI 响应
- 发出信号以从线程更新 UI
- 更好的文本UI调试C++器,如python的pudb
- 可以在JSON文件的帮助下在Qt中创建UI表单
- 在 ui 文件中隐藏 QTabWidget 中的单个选项卡窗格?
- 由于多个 *.ui 文件而导致的多个Ui_Dialog定义?
- 以下编译时编程任务在C++中是可能的
- 如何将 .ui 完全转换为 C++ 头文件和源文件
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?