Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Alex Custov от Февраль 13, 2009, 05:52



Название: combobox и его popup
Отправлено: Alex Custov от Февраль 13, 2009, 05:52
Можно ли заставить отображать QComboBox его попап так, чтобы ширина попапа была такой какая мне нужна, а не равной ширине самого комбобокса? Проблема очевидна - если сам QComboBox маленького размера, а в нём содержатся длинные строки текста, то при выпаде попапа в нём практически ничего нельзя будет разобрать. Т.е. надо что-то типа

Код:
          +-------------+---+
          | qwertyuiop..| X |
----------+-------------+---+
| qwertyuiopqwertyuiop...   |
| qwertyuiopqwertyuiop...   |
| qwertyuiopqwertyuiop...   |
| qwertyuiopqwertyuiop...   |
----------------------------+


Название: Re: combobox и его popup
Отправлено: Пантер от Февраль 13, 2009, 07:18
Можно, только не помню как. На форуме 100% было. ;)


Название: Re: combobox и его popup
Отправлено: BaltikS от Февраль 13, 2009, 07:50
Я так понимаю вернуть view() и, посколько оно имеет предка QWidget, поиграться с ним...


Название: Re: combobox и его popup
Отправлено: spirit от Февраль 13, 2009, 09:13
можно сделать так
Код
C++ (Qt)
MyComboBox::MyComboBox(QWidget *parent) : QComboBox(parent)
{
}
 
void MyComboBox::showPopup()
{
   view()->setFixedSize(300, 300);
   QComboBox::showPopup();
}
 


Название: Re: combobox и его popup
Отправлено: Rcus от Февраль 13, 2009, 09:38
Цитировать
minimumContentsLength : int

This property holds the minimum number of characters that should fit into the combobox.

The default value is 0.

If this property is set to a positive value, the minimumSizeHint() and sizeHint() take it into account.

Access functions:

int minimumContentsLength () const
void setMinimumContentsLength ( int characters )
или изменить sizeAdjustPolicy


Название: Re: combobox и его popup
Отправлено: Alex Custov от Февраль 13, 2009, 12:04
Цитировать
minimumContentsLength : int

This property holds the minimum number of characters that should fit into the combobox.

The default value is 0.

If this property is set to a positive value, the minimumSizeHint() and sizeHint() take it into account.

Access functions:

int minimumContentsLength () const
void setMinimumContentsLength ( int characters )
или изменить sizeAdjustPolicy

Не будет работать


Название: Re: combobox и его popup
Отправлено: lit-uriy от Февраль 13, 2009, 13:44
можно дать пользователю возможность самому менять размер, пример (http://wiki.crossplatform.ru/index.php/Изминение_размера_у_popup_списка_QComboBox)


Название: Re: combobox и его popup
Отправлено: Alex Custov от Февраль 13, 2009, 16:05
можно сделать так
Код
C++ (Qt)
MyComboBox::MyComboBox(QWidget *parent) : QComboBox(parent)
{
}
 
void MyComboBox::showPopup()
{
   view()->setFixedSize(300, 300);
   QComboBox::showPopup();
}
 

гм, а ведь может сработать, как проверю отпишусь.. спасибо на наводку :)


Название: Re: combobox и его popup
Отправлено: Alex Custov от Февраль 13, 2009, 18:11
да, с setFixedWidth() прокатило, главное посчитать нужную ширину через QFontMetrics и всё ок. Спасибо.