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

时间:2016-08-20 13:27:01

标签: c++ qt

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

我正在编写桌面日历应用。我有42个按钮用于显示日期数字,点击后,它会显示一个用于添加注释的编辑字段。这些按钮已经制作好并且就位。它们都有效,但我想将它们组合成一个阵列,以便于编码。任何人都可以建议我如何做到这一点?我搜索了文档,但我真的不明白。

提前感谢您的放纵。

2 个答案:

答案 0 :(得分:0)

您可以创建一个数组或任何其他容器(如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);

答案 1 :(得分:0)

使用像这样的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();