Qt - 在面板中动态添加 QLineEdit

Posted

技术标签:

【中文标题】Qt - 在面板中动态添加 QLineEdit【英文标题】:Qt - dynamically add QLineEdit in a panel 【发布时间】:2012-03-20 10:43:40 【问题描述】:

这是一个使用 Qt/C++ 编程的问题。我有一个包含两个项目的组合框。如果当前选择的索引为 0,则组合框下方的布局中不应显示 QLineEdit。如果为 1,则应出现 QLineEdit。如果 index 再次为 0,它应该会再次消失。 值得注意的是,布局中的其他元素不应受到更改的影响。用户已在其他 QineEdit 中输入的值应保留。

是否可以动态修改小部件?你是如何进行的?

亲切的问候。

【问题讨论】:

您尝试过哪些让您感到困惑的事情?这个任务似乎并不复杂 【参考方案1】:

所有 QWidget 对象都有一个名为 hide() 的函数。

您可以将信号附加到组合框的 currentIndexChanged 信号,然后在该函数中实现您想到的任何逻辑并调用 QLineEdit 的方法 hide。

这种方法的唯一问题是 Qt 小部件在隐藏时不会占用屏幕上的任何空间,这可能会导致布局更改(取决于您对布局的编程方式,其他一些小部件可以例如,移动一点)。为了防止您可以让另一个小部件出现在 QLineEdit 所在的位置(可能调用 show() 函数,并将“占位符”放置在 LineEdit 所在的同一容器上),只是为了占用它的空间并将其保留在那里,或者您可以使用 QStackedWidget 在其中添加两个 Widget 并更改其索引。

我建议您阅读以下示例,它对动态变化有一些有用的见解:Qt Extension Example。

此外,如果有疑问,请查看其他示例,它们的文档非常详细,涵盖了 Qt 的许多重要主题。

祝你的代码好运:)

【讨论】:

回答半,我只是要链接到 Qt 文档,赞成。 Tks Castilho。但是,它既不适用于 hide() 也不适用于 setVisible(true/false)。我将仔细阅读示例以找出答案。显然 hide() 单独不适合,因为我需要小部件在需要时重新出现。

以上是关于Qt - 在面板中动态添加 QLineEdit的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 中如何在 QLineEdit 中添加带有 QFileDialog 的文件

如何动态读取 QLineEdit 数据

Extjs 无法在表单面板中动态添加/删除字段

如何在 Qt 中动态添加选项卡?

如何在Qt中动态添加菜单

Qt中QTabWidget动态添加页面的问题