如何制作小部件的 QVector?

发布于 2024-08-02 21:24:36 字数 613 浏览 6 评论 0原文

如何制作动态数量的小部件的 QVector (或其他一些容器类),例如 Qt 4 中的 QPushButtonQComboBox

我在窗口类的构造函数中使用了以下内容:

QVector<QComboBox*> foo; // Vector of pointers to QComboBox's

现在我想用一些可以动态更改的控件来填充它:

for(int count = 0; count < getNumControls(); ++count) {
    foo[count] = new QComboBox();
}

我已经搜索了几个小时试图找到这个问题的答案。 Qt 论坛提到制作 QPtrList,但该类在 Qt4 中不再存在。 我稍后会尝试使用数组样式索引或 .at() 函数从每个中获取文本值。

我真的很欣赏一个声明、初始化和填充任何 QWidgets 的任何数据结构的示例(QComboBoxQPushButton 等)

How do I make a QVector (or some other container class) of a dynamic number of widgets, such as QPushButton or QComboBox in Qt 4?

I've used the following in my window class's constructor:

QVector<QComboBox*> foo; // Vector of pointers to QComboBox's

And now I want to fill it with some number of controls which can change dynamically:

for(int count = 0; count < getNumControls(); ++count) {
    foo[count] = new QComboBox();
}

I've searched for hours trying to find the answer to this. The Qt forums mention making a QPtrList, but that class no longer exists in Qt4.
I'd later try to get the text value from each using array-style indexing or the .at() function.

I would really appreciate an example of declaring, initializing, and populating any data structure of any QWidgets (QComboBox, QPushButton, etc.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏爱你一生 2024-08-09 21:24:36

给你:)

#include <QWidget>
#include <QList>
#include <QLabel>
...
QList< QLabel* > list;
...

list << new QLabel( parent, "label 1" );
..
..

foreach( QLabel* label, list )  {
label->text();
label->setText( "my text" );
}

如果您只是想获得一个简单的示例,那么您的小部件有一个父级(用于上下文/清理)目的很重要。

希望这有帮助。

here you go :)

#include <QWidget>
#include <QList>
#include <QLabel>
...
QList< QLabel* > list;
...

list << new QLabel( parent, "label 1" );
..
..

foreach( QLabel* label, list )  {
label->text();
label->setText( "my text" );
}

If you are trying just to get a simple example to work, its important that your widgets have a parent (for context / clean up) purposes.

Hope this helps.

失与倦" 2024-08-09 21:24:36
foo[count] = new QComboBox();

这不会影响 foo 的大小。如果索引计数中尚不存在项目,则此操作将会失败。
请参阅 push_back运算符<<,将项目添加到列表末尾。

QVector<QComboBox*> foo;
// or QList<QComboBox*> foo;
for(int count = 0; count < getNumControls(); ++count) {
    foo.push_back(new QComboBox());
    // or foo << (new QComboBox());
}

稍后,要检索值:

foreach (QComboBox box, foo)
{
  // do something with box here
}
foo[count] = new QComboBox();

This won't affect the size of foo. If there isn't already an item at index count, this will fail.
See push_back, or operator<<, which add an item to the end of the list.

QVector<QComboBox*> foo;
// or QList<QComboBox*> foo;
for(int count = 0; count < getNumControls(); ++count) {
    foo.push_back(new QComboBox());
    // or foo << (new QComboBox());
}

Later, to retrieve the values:

foreach (QComboBox box, foo)
{
  // do something with box here
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文