Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2014, 16:58   #1
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,152
По умолчанию как в комбобокс правильно добавлять прежние значения?

Например, в редакторе в окошке "найти/заменить", поле "найти" - это комбобокс, в котором можно выбирать уже использованные ранее строчки.

Какой алгоритм, что бы сделать тоже самое?

Код:
 
 bool ComboFileFocusFilter::eventFilter( QObject *dist, QEvent *event ){
	 static QString sPrev;
	 QComboBox *cmb =qobject_cast<QComboBox *>(dist);

	 if( event->type() == QEvent::FocusIn )
	 {	
		bool bInsrt = true;
		sPrev = cmb->currentText();
		for (int i = 0; i < cmb->count() ; i++)
		{
			if (cmb->itemText(i) == cmb->currentText())
			{
				bInsrt = true;
				break;
			}
		}
		if (bInsrt)
		{
			cmb->insertItem(0, cmb->currentText());
		}
	 }
	
	if( event->type() == QEvent::FocusOut )
	{
		QString s = cmb->currentText();
		for (int i = 0; i < cmb->count() ; i++)
		{
			if (cmb->itemText(i) == cmb->currentText())
			{				
				cmb->removeItem(i);
				cmb->setEditText(s);
				break;
			}
		}
	}	
	return false;
 }
То есть тут по событию "фокусПолучен" в список добавляется "активныйТекст". И по событию "фокусПотерян", если ничего не изменилось, то удаляется. Но тогда получается, что при нажатии на кнопку-стрелочку "развернуть список" начинается дерганье, ибо порядок действий случается такой:
1. список разворачивается
2. событие потери фокуса
3. обновление уже открытого списка

Кароч, код корявый и неправильный.

Может, этот вопрос кто уже решал?

PS. уже не актуально. задача была поставлена не правльно

Последний раз редактировалось Smogg; 03.02.2014 в 22:01.
Smogg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DataGridView не хочет добавлять значения более чем в 3 строки Konstantin1706 Windows Forms 0 08.12.2013 15:13
C++ Как изменять значения закрытых данных переменных через функцию с открытыми данными?Правильно ли я понимаю создание объектов? Shadol Помощь студентам 4 14.02.2012 13:58
как связать списки через комбобокс? delphi_prototip Компоненты Delphi 2 25.09.2010 23:15
как добавлять в файл ZET78 Общие вопросы C/C++ 3 02.05.2010 20:27
Как правильно Менять текстовые значения Аннотаций в Солиде Stilet Общие вопросы Delphi 0 21.01.2009 16:51