将现有的QPushButtons集合转换为单个数组

Converting an existing set of QPushButtons to a single array

本文关键字:转换 单个 数组 集合 QPushButtons      更新时间:2023-10-16

我是Qt和c++的绝对初学者,所以请原谅我。

我正在写一个桌面日历应用程序。我有42个按钮显示日期数字,其中,当点击,将提出一个编辑字段添加注释。这些钮扣已经做好了。它们都可以工作,但是为了便于编码,我想把它们放在一个数组中。谁能告诉我该怎么做?我已经搜索了文档,但我真的不懂。

提前感谢您的纵容

像这样使用Qvector:

QVector<QPushButton*> btns;
btns.append(oldbuttonname);

我建议循环遍历所有的按钮,而不是手动将它们一个接一个地放入。我的意思是摆脱你以前的按钮,并在QVector中创建非命名对象。下面是一个例子:

QVector<QPushButton*> btns(42);
for (int i=0;i<btns.size();i++)
{
    btns[i] = new QPushButton(/*constructor args*/);
}
//Access like this
btns[0]->member_name();

您可以创建小部件(指向小部件的指针)的数组或任何其他容器(如QVector),以将所有这些集合在一个地方。你既可以创建新对象,也可以分配已经存在的对象,例如:

QVector<QPushButton*> buttons;
buttons.append(new QPushButton());

最终对于你的已经存在的按钮:

QVector<QPushButton*> buttons;
buttons.append(ui->pushButton);
buttons.append(ui->pushButton_2);
//etc..

那么你就可以像访问数组的典型元素一样访问它们:

buttons[0]->height = 50;
buttons[1]->setVisible(false);