можно это както сделать малой кровью или свой виджет надо мастерить ?
Неа, малой кровью не получится
Перегрузи 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.