Преобразование существующего набора QPushButtons в один массив

c++ qt

105 просмотра

2 ответа

Я абсолютный новичок в Qt и C ++, поэтому, пожалуйста, прости меня.

Я пишу приложение для настольного календаря. У меня есть 42 кнопки для отображения номеров дней, при нажатии на которые открывается поле для добавления заметки. Эти кнопки уже сделаны и на месте. Все они работают, но я хотел бы объединить их в один массив для простоты кодирования. Кто-нибудь может подсказать, пожалуйста, как я могу это сделать? Я искал документацию, но я не совсем понимаю.

Заранее спасибо за вашу снисходительность.

Автор: Hooder Источник Размещён: 08.11.2019 11:21

Ответы (2)


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();
Автор: Arnav Borborah Размещён: 20.08.2016 02:00

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);
Автор: Mateusz Размещён: 20.08.2016 01:53
Вопросы из категории :
32x32