Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: unkier от Май 04, 2011, 11:36



Название: размер выпадающего меню QComboBox
Отправлено: unkier от Май 04, 2011, 11:36
строки в комбобоксе у меня бывают длинные. то что в свёрнутом виде они сокращаются это терпимо, но хотелось бы видеть их целиком когда выдвинуто выпадающее меню. можно это както сделать малой кровью или свой виджет надо мастерить ?



Название: Re: размер выпадающего меню QComboBox
Отправлено: GreatSnake от Май 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 (http://bugreports.qt.nokia.com/browse/QTBUG-11447).


Название: Re: размер выпадающего меню QComboBox
Отправлено: unkier от Май 04, 2011, 19:43
ух ты, какой четкий ответ :)
спасибо. завтра буду пробовать.