Что-то не могу понять как правильно выдергивать данные из массива QString
У меня такая беда в Qt: не получается вывести в textEdit данные из массива последовательно из каждой ячейки, чтобы при каждом клике был новый вопрос.
main.h
QString list[5];
main.cpp
list[0] = "Верите ли вы в астрологию?";
list[1] = "Может ли гомеопатия быть полезной?";
list[2] = "Как думаете, есть ли у вас какие-нибудь родственные связи с бананом?";
list[3] = "Человек - это обезьяна или нет?";
list[4] = "Как думаете, могла ли Вселанная зародиться сама по себе?";
В обработчике события onclick:
for (int i = 0; i<5; i++){
ui->tE->setText(list[i]);
}
Нажимаю кнопочку - и сразу же с астрологии перелетаю на Вселенную, а промежуточных вариантов нет, хотя, если в ui->tE->setText(list[i]); строго задать 3, то речь, соответственно, идет об обезьянах. Пожалуйста, объясните, как сделать чтобы все вопросы шли по очереди.
Ответы (2 шт):
Вам не нужен здесь цикл. Когда вы применяете цикл, каждый раз при нажатии у вас в текстовом поле устанавливаются последовательно все элементы массива. Вам же нужно просто выбрать следующий. Например, так:
//Условный OnClick:
void onClickEvent(){
static int pos = 0;
ui->tE->setText(list[pos]);
if(++pos == 5)
pos = 0;
}
Вы точно понимаете что вы пытаетесь делать? Вместо цикла можете смело написать
ui->tE->setText(list[4]);
Результат тот же. Операций меньше. При обработке клика все равно переберутся все элементы и в итоге получится последний. Чего вы пытаетесь добиться?
Если на каждое нажатие кнопки вы хотите выводить новый элемент, то вам и в обработчике надо делать только одно присваивание. И надо сказать что использование массива QString несколько корявое решение.
QStringList list = QStringList()<<"Верите ли вы в астрологию?"
<<"Может ли гомеопатия быть полезной?"
<<"Как думаете, есть ли у вас какие-нибудь родственные связи с бананом?"
<<"Человек - это обезьяна или нет?"
<<"Как думаете, могла ли Вселанная зародиться сама по себе?";
и onClick:
list.append(list.first());
ui->tE->setText(list.first());
list.removeFirst();