Russian Qt Forum
Ноябрь 26, 2024, 13:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: combobox и его popup  (Прочитано 6673 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Февраль 13, 2009, 05:52 »

Можно ли заставить отображать QComboBox его попап так, чтобы ширина попапа была такой какая мне нужна, а не равной ширине самого комбобокса? Проблема очевидна - если сам QComboBox маленького размера, а в нём содержатся длинные строки текста, то при выпаде попапа в нём практически ничего нельзя будет разобрать. Т.е. надо что-то типа

Код:
          +-------------+---+
          | qwertyuiop..| X |
----------+-------------+---+
| qwertyuiopqwertyuiop...   |
| qwertyuiopqwertyuiop...   |
| qwertyuiopqwertyuiop...   |
| qwertyuiopqwertyuiop...   |
----------------------------+
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 13, 2009, 07:18 »

Можно, только не помню как. На форуме 100% было. Подмигивающий
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BaltikS
Гость
« Ответ #2 : Февраль 13, 2009, 07:50 »

Я так понимаю вернуть view() и, посколько оно имеет предка QWidget, поиграться с ним...
Записан
spirit
Гость
« Ответ #3 : Февраль 13, 2009, 09:13 »

можно сделать так
Код
C++ (Qt)
MyComboBox::MyComboBox(QWidget *parent) : QComboBox(parent)
{
}
 
void MyComboBox::showPopup()
{
   view()->setFixedSize(300, 300);
   QComboBox::showPopup();
}
 
Записан
Rcus
Гость
« Ответ #4 : Февраль 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
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Февраль 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

Не будет работать
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Февраль 13, 2009, 13:44 »

можно дать пользователю возможность самому менять размер, пример
Записан

Юра.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Февраль 13, 2009, 16:05 »

можно сделать так
Код
C++ (Qt)
MyComboBox::MyComboBox(QWidget *parent) : QComboBox(parent)
{
}
 
void MyComboBox::showPopup()
{
   view()->setFixedSize(300, 300);
   QComboBox::showPopup();
}
 

гм, а ведь может сработать, как проверю отпишусь.. спасибо на наводку Улыбающийся
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #8 : Февраль 13, 2009, 18:11 »

да, с setFixedWidth() прокатило, главное посчитать нужную ширину через QFontMetrics и всё ок. Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.092 секунд. Запросов: 23.