Russian Qt Forum
Ноябрь 25, 2024, 02:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QComboBox и setDuplicatesEnabled  (Прочитано 3857 раз)
kolob
Частый гость
***
Offline Offline

Сообщений: 296



Просмотр профиля
« : Февраль 22, 2011, 16:34 »

Добрый день! Возник такой вот вопрос. Как избавиться от дубликатов в ComboBox? Вроде бы ни чего сложного, ведь есть функция setDuplicatesEnabled. Но у меня она не выполняет своих действий. Комбобокс создаю программно. Вызываю функцию setDuplicatesEnabled(false). Потом заполняю и в итоге повторы остаются.
Вот код:
Код:
tool = new QToolBar(this);
QComboBox *comboBox = new QComboBox(tool);
comboBox->setDuplicatesEnabled(false);

connect(comboBox, SIGNAL(activated(const QString&)), this, SLOT(function(const QString&)));

int row;
for(row = table->numRows() - 1; row >= 0; row--)
comboBox->insertItem(table->text(row, 0));
Записан

Qt 5.11.0, Win, MinGW
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Февраль 22, 2011, 16:38 »

Внимательно читаем описание:
Цитировать
This property only affects user-interaction. You can use insertItem() to insert duplicates if you wish regardless of this setting.
Записан

Qt 5.11/4.8.7 (X11/Win)
kolob
Частый гость
***
Offline Offline

Сообщений: 296



Просмотр профиля
« Ответ #2 : Февраль 22, 2011, 16:45 »

Спасибо. Понятно. В Qt4 это уже прочитал. Думал в 3 что то другое Грустный
Записан

Qt 5.11.0, Win, MinGW
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Февраль 22, 2011, 17:08 »

Цитировать
Спасибо. Понятно. В Qt4 это уже прочитал. Думал в 3 что то другое
Ну а в чём сложности? Перед добавлением вставь проверку:
Код
C++ (Qt)
int i;
for( i = 0; i < comboBox->count(); i++ )
  if( comboBox->text( i ) == your_text )
    break;
if( i < comboBox->count() )
   comboBox->insertItem( your_text );
 
« Последнее редактирование: Февраль 22, 2011, 17:16 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
kolob
Частый гость
***
Offline Offline

Сообщений: 296



Просмотр профиля
« Ответ #4 : Февраль 24, 2011, 15:04 »

Спасибо GreatShake, я уже так и сделал. Только вот у тебя в примере, я думаю в последнем условии нужно поменять
Код:
if( i < comboBox->count() )
на
Код:
if( i == comboBox->count() )
Записан

Qt 5.11.0, Win, MinGW
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Февраль 25, 2011, 08:57 »

Да, конечно  Улыбающийся
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.134 секунд. Запросов: 22.