Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Mitya от Октябрь 10, 2011, 21:19



Название: QComboBox не вносит последний введенный текст в свой список.
Отправлено: Mitya от Октябрь 10, 2011, 21:19
Есть QComboBox с включенным Editable. Считываю через QComboBox::itemText(index) все введенные строки. Все считываются, кроме последнего введенного, если ввод не был завершен Enter`ом(например кликнули на другой виджет). Но при этом через QComboBox::currentText() данная строка доступна. Сейчас работает путем перебора всех индексов и запросом на текущий, но кажется это немного моветон. Как правильно?


Название: Re: QComboBox не вносит последний введенный текст в свой список.
Отправлено: Bepec от Октябрь 11, 2011, 14:43
Код в студию, и тогда я приеду к вам с банкой огурцов и добрым советом.


Название: Re: QComboBox не вносит последний введенный текст в свой список.
Отправлено: Mitya от Октябрь 11, 2011, 19:39
//Создаем и заполняем
Код
C++ (Qt)
QComboBox *cbGroup = new QComboBox();
cbGroup->setInsertPolicy(QComboBox::InsertAlphabetically);
cbGroup->addItems(debetGroup);
cbGroup->setEditable(true);
.....
//Не знаю важно это или нет, QComboBox вставлен в QTableWidget
Код
C++ (Qt)
debetTable->setCellWidget(currentRow, 1, cbGroup);
...
//Подключение обработки событий на введенный новый текст
Код
C++ (Qt)
   connect(cbGroup, SIGNAL(currentIndexChanged(QString)),
           this, SLOT(addGroup(QString)));
...
//Собственно сам процесс считывания данных
Код
C++ (Qt)
QComboBox *tmpCB;
QStringList debetGroup;
 
tmpCB = (QComboBox *)ui->debetTable->cellWidget(i, 1);
debetGroup<<tmpCB->currentText();              
 
]for (int x = 0; x<tmpCB->count(); x++)
{
   debetGroup<<tmpCB->itemText(x);
};

как то так...


Название: Re: QComboBox не вносит последний введенный текст в свой список.
Отправлено: Bepec от Октябрь 12, 2011, 08:07
Посмотрел твою проблемку. Создал у себя примерчик и немного озадачился.

Код:
 connect(cbGroup, SIGNAL(currentIndexChanged(QString)), this, SLOT(addGroup(QString)));

реагирует именно на Enter как на конец редактирования.


У тебя 2 выбора:
1) как у тебя и реализовано, дотыкивать все куррент тексты по порядку.

2) или же на евент потери фокуса добавить функционал добавления, обычным addItem. Что более мне импонирует.