Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/41: Рейтинг темы: голосов - 41, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 02.01.2014
Сообщений: 54
1

Объявление массива кнопок

27.09.2014, 12:16. Показов 7751. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, я хочу обращаться к кнопке через индексы массива, то есть у меня есть массив кнопок и я хочу задавать свойства кнопкам через него, к примеру вместо вот такого кода:
C++ (Qt)
1
2
3
4
ui->bt0->setText("?");
ui->bt1->setText("?");
ui->bt2->setText("?");
ui->btS->setText("?");
писать вот так:
C++ (Qt)
1
2
3
4
button[0]->setText("?");
button[1]->setText("?");
button[2]->setText("?");
button[3]->setText("?");
как это можно реализовать? (как объявить подобный массив и как заполнить)ООП занимаюсь очень мало, но очень надо написать такую штуку что бы тоны кода не было, заранее спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2014, 12:16
Ответы с готовыми решениями:

Из созданного массива кнопок одна из кнопок (9) должна выполнять метод Percent
Из созданного массива кнопок одна из кнопок (9) должна выполнять метод Percent, но после запуска...

объявление массива
int N = 10; int mas = {5,8,2,0,6,3,8,2,7,9}; По чему так нельзя, подчеркивает masN]?

Объявление массива
Всем привет! Я знаю следующие способы объявить массив //Статический int a; //Динамический...

объявление массива
помнится в паскале можно было написать нечто вроде Public Stroka(50) As String Public...

5
23 / 13 / 5
Регистрация: 07.08.2012
Сообщений: 109
27.09.2014, 12:50 2
C++ (Qt)
1
2
QPushButton[9] *buttons;
buttons[0] = new QPushButton
попробуй
хотя может быть неправильно)) скажи о результате
0
8 / 8 / 4
Регистрация: 09.06.2013
Сообщений: 43
27.09.2014, 13:06 3
Поправил, чтоб не загромождать остальным кодом:


Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    
#include <QLayout>
#include <QList>
#include <QPushButton>
 
...
 
QList<QPushButton *> *buttons = new QList<QPushButton *>();
 
    QVBoxLayout *l = new QVBoxLayout(this);
    setLayout(l);
 
    for(int i = 0; i < 5; i++)
    {
        QPushButton *b = new QPushButton("test", this);
        l->addWidget(b);
        buttons->append(b);
    }
 
 
    for(int i = 0; i < buttons->size() - 2; i++)
    {
        buttons->at(i)->setText("?");
    }
0
1 / 1 / 0
Регистрация: 02.01.2014
Сообщений: 54
28.09.2014, 13:42  [ТС] 4
Цитата Сообщение от Ekventor Посмотреть сообщение
QVBoxLayout *l = new QVBoxLayout(this); setLayout(l);
Ругается
error: invalid use of 'this' at top level
QVBoxLayout *l = new QVBoxLayout(this);
error: expected constructor, destructor, or type conversion before '(' token
setLayout(l);
0
8 / 8 / 4
Регистрация: 09.06.2013
Сообщений: 43
28.09.2014, 22:43 5
Лучший ответ Сообщение было отмечено archi9696 как решение

Решение

Просто я писал код в конструкторе виджета

Цитата Сообщение от archi9696 Посмотреть сообщение
error: invalid use of 'this' at top level
QVBoxLayout *l = new QVBoxLayout(this);
и родителя указывал как раз через this, т.е. текущий виджет

Цитата Сообщение от archi9696 Посмотреть сообщение
setLayout(l);
C++ (Qt)
1
void QWidget::setLayout ( QLayout * layout )
Вот пример в main.cpp, в качестве родителя указывал объект-виджет "w"

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <QApplication>
#include <QtWidgets>
#include <QLayout>
#include <QList>
#include <QPushButton>
 
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
 
    QVBoxLayout *l = new QVBoxLayout(&w);
    w.setLayout(l);
 
    QList<QPushButton *> *buttons = new QList<QPushButton *>();
    for(int i = 0; i < 5; i++)
    {
        QPushButton *b = new QPushButton("test", &w);
        l->addWidget(b);
        buttons->append(b);
    }
 
 
    for(int i = 0; i < buttons->size() - 2; i++)
    {
        buttons->at(i)->setText("?");
    }
 
 
    w.show();
    
    return a.exec();
}
1
127 / 105 / 27
Регистрация: 25.02.2010
Сообщений: 451
30.09.2014, 11:11 6
Ekventor, Добрый день. Как вариант, создать вектор указателей QPushButton, при создании кнопок запихивать их в вектор, а далее работать с элементами вектора.
UPD. Пардон, не посмотрел последний код. Вы уже реализовали идею.
0
30.09.2014, 11:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2014, 11:11
Помогаю со студенческими работами здесь

объявление массива
Можно ли так объявлять массив? Если да, то в чем отличие? ... int b=5; int a; ...

Объявление массива
Всем добрый день, очень нужна помощь. Вопрос собственно такой: Объявляется объект class...

Объявление массива
Есть два файла первый с функцией main() main.cpp #include &lt;iostream&gt; #include &lt;string&gt;...

с C# в C++, объявление массива
Добрый вечер, Всем! =) Пытаюсь перевести ф-цию с C# в VS C++ Есть функция на C# int M_SLED()...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru