是否可以将ui对象(按钮,文本框等)添加到可见的qt窗口,即我有一个具有QTextEdit的窗口,用户可以在其中添加一个数字,然后有一个按钮可以添加另一个QTetEdit另一个数字和一个删除它的按钮。这意味着我可以添加任意数量的字段,稍后我可以对所有元素执行某种计算,因为我需要能够添加任意数量的额外对象,因此显示和隐藏元素可能效率低下。这是一个组成的例子,但它证明了我所追求的目的。
有没有人做过类似的事情?
- 更新 -
下面是我正在尝试的一些不适合我的代码,代码运行时窗口已经可见:
void MainWindow::addArgument()
{
QPushButton button;
ui->addArgRowHorizontalLayout->addWidget(&button);
button.show();
this->show();
}
任何人都知道我做错了什么,一切都在qtcreator中自动完成并编译没有错误所以我不知道下一步该去哪里。
Ĵ
答案 0 :(得分:7)
我正在参考更新的内容。 您是否已从C#/ Java迁移到C ++?
QPushButton button;
此指令在堆栈上创建QPushButton对象,堆栈上的对象在其作用域结束时被销毁,在本例中是函数的结束括号。要使对象持久,您应该在堆:
上分配它QPushButton* button = new QPushButton();
当然,从现在开始你必须使用指针语义。
通常在C ++中,当应用程序的逻辑不再需要它时,您必须从堆中手动删除对象。值得庆幸的是,Qt会跟踪QObject,因此您很少需要自己处理它们。启动C ++的好地方是C++ FAQ。此外,您应该阅读Qt手册,它非常容易阅读并获得Qt的概念。
答案 1 :(得分:3)
我设法动态地将小部件添加到我的主窗口,如下所示:
MainWindow :: addWidget()是MainWindow的一个插槽
void MainWindow::addWidget()
{
QPushButton* button = new QPushButton;
ui->HorizontalLayout->addWidget(button);
button->show();
}
当你知道如何:
时很简单答案 2 :(得分:0)
答案 3 :(得分:0)
Qt如何创建其ui对象并不神秘:Qt Designer生成C ++源代码,您可以查看。如果您的表单名称是MyForm.ui
,那么您应该在构建目录中找到一个文件ui_MyForm.h
;该文件中的函数setupUi
向您展示如何从头开始构建ui。
答案 4 :(得分:0)
检查this post。我在之前的一个项目中做了类似的事情,它就像一个魅力。