Название: QComboBox: ширина выпадающего списка по содержимому... Отправлено: Cyrax от Января 10, 2008, 10:51 Как в QComboBox установить щирину выпадающего списка по содержимому этого списка, чтобы в списке не было многоточий. Т.е., при необходимости, ширина выпадающего списка может быть шире самого combobox'а в зависимости от содержимого списка.
setInsertPolicy() - не то setSizeAdjustPolicy() - похоже, но нужно применительно к выпадающему списку... Название: Re: QComboBox: ширина выпадающего списка по содержимому... Отправлено: Racheengel от Января 11, 2008, 01:55 можно переопределить showPopup(), пройтись по списку, найти максимальную ширину текста и поменять размер, примерно так:
void MYComboBox::showPopup() { QComboBox::showPopup(); int w = 0, w1; QFontMetrics fm; for (int i = 0; i < count(); i++) { w1 = fm.width (itemText(i)); if (w1 > w) w = w1; } // let's find container among the children const QObjectList &kids = children(); for (int i = 0; i < kids.count(); i++) { QFrame *fr = dynamic_cast<QFrame*>(kids.at(i)); if (fr) { fr->setWidth(w + 10); // add 10 extra pixels ... break; } } } Название: Re: QComboBox: ширина выпадающего списка по содержимому... Отправлено: Alex03 от Января 11, 2008, 07:43 можно переопределить showPopup(), пройтись по списку, найти максимальную ширину текста и поменять размер, примерно так: так костылис.... Хочется свойсва в "Базовой комплектации" :) :)void MYComboBox::showPopup() { QComboBox::showPopup(); int w = 0, w1; QFontMetrics fm; for (int i = 0; i < count(); i++) { w1 = fm.width (itemText(i)); if (w1 > w) w = w1; } // let's find container among the children const QObjectList &kids = children(); for (int i = 0; i < kids.count(); i++) { QFrame *fr = dynamic_cast<QFrame*>(kids.at(i)); if (fr) { fr->setWidth(w + 10); // add 10 extra pixels ... break; } } } Второй цикл можно упразднить используя Код: QAbstractItemView * QComboBox::view () const |