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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: размер выпадающего меню QComboBox  (Прочитано 5486 раз)
unkier
Гость
« : Май 04, 2011, 11:36 »

строки в комбобоксе у меня бывают длинные. то что в свёрнутом виде они сокращаются это терпимо, но хотелось бы видеть их целиком когда выдвинуто выпадающее меню. можно это както сделать малой кровью или свой виджет надо мастерить ?

Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Май 04, 2011, 11:51 »

Цитировать
можно это както сделать малой кровью или свой виджет надо мастерить ?
Неа, малой кровью не получится Грустный
Перегрузи QComboBox::showPopup():
Код
C++ (Qt)
void ComboBox::showPopup()
{
QListView* lv = qobject_cast< QListView* >( view() );
int width = 0;
int len = 0;
QFontMetrics fm( lv->fontMetrics() );
for( int i = 0; i < count(); i++ )
{
QString t( itemText( i ) );
if( len < t.length() )
{
len = t.length();
width = qMax( fm.width( t ), width );
}
}
view()->setMinimumWidth( width + 10 +
(count() > maxVisibleItems() ?
view()->verticalScrollBar()->sizeHint().width() : 0 ) );
 
QComboBox::showPopup();
}
 

Только по-хорошему нужно ещё добавить проверку чтобы расчёт ширины делался только в случае изменения содержимого списка.

Можно вообще всё это не делать, а повесить QSizeGrip и растягивать список интерактивно.
Но пока это возможно только под виндой. Под Х-ы обещали в 4.8.
« Последнее редактирование: Май 04, 2011, 12:02 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
unkier
Гость
« Ответ #2 : Май 04, 2011, 19:43 »

ух ты, какой четкий ответ Улыбающийся
спасибо. завтра буду пробовать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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