можно это както сделать малой кровью или свой виджет надо мастерить ?
Неа, малой кровью не получится 

Перегрузи 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.