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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сложная компоновка виджетов  (Прочитано 3809 раз)
robin_bobin
Гость
« : Октябрь 11, 2012, 13:12 »

1. на форме располагаются в QFrame в количестве n в лэйаутах QHBoxLayout. все эти лэауты помещены в один QVBoxLayout, который располагается на главной форме. т.е. компонуются по вертикали в столбик, с одинаковой шириной.

2. на каждом QFrame располагаются 3 виджета в лэйоуте QHBoxLayout. первый виджет может быть разной ширины, второй виджет всегда одинаковой, третий виджет может быть разной ширины, но у третьего виджета ширина может меняться во время работы программы.

нужно:
1) чтобы это всё отображалось как в таблице. т.е. каждый "столбик" должен быть шириной равной ширине самого широкого виджета в столбике
2) первый виджет в каждой "строке" может быть разной ширины и не может менять ширину после создания.
после первого виджета я добавил SpacerItem, и после добавления виджетов, я вычисляю самый длинный, потом устанавливаю ширину у SpacerItem равную (ширине самого широкого виджета) минус (шаирина виджета в данной строке). в итоге получается ровный столбик
3) третий виджет это Cobobox. после него я добавил Stretch

в итоге у меня всё работает, только при добавлении в комбобокс элементов, когда я делаю adjustSize, чтобы расширить комбобокс и в нём можно было читать нормально элементы, то комбобокс не расширяется. ширину комбобоксов я могу выровнять, вычислив самый широкий и присвоить всем остальным эту ширину, но проблема в том, что он не расширяется. помогите разобраться) прилагаю рисунок как я сделал.
http://hostingkartinok.com/show-image.php?id=43084c47ca972210f5aba55403216854
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Октябрь 11, 2012, 13:33 »

3) третий виджет это Cobobox. после него я добавил Stretch
Наверное причина в этом.
Записан

Qt 5.11/4.8.7 (X11/Win)
robin_bobin
Гость
« Ответ #2 : Октябрь 11, 2012, 14:45 »

3) третий виджет это Cobobox. после него я добавил Stretch
Наверное причина в этом.

да, спасибо. теперь я не могу узнать размеры комбобоксов до тех пор, пока форма не отобразилась. если задаю ширину 100 до появления, то всё работает как надо.. как узнать ширину комбобоксов до появления или при появлении окна?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Октябрь 11, 2012, 20:20 »

showEvent
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Октябрь 11, 2012, 21:31 »

Либо перегрузить setVisible() top-level окна либо самого QComboBox.
Записан

Qt 5.11/4.8.7 (X11/Win)
robin_bobin
Гость
« Ответ #5 : Октябрь 12, 2012, 09:51 »

сделал так

Код:
int Dialog::exec()
{
    QDialog::show();
    calculateCombo();
    setVisible(true);
    return QDialog::exec();
}

setVisible(false);
exec();


теперь другая проблема появилась))) разместил её тут
http://www.prog.org.ru/topic_23254_0.html
« Последнее редактирование: Октябрь 12, 2012, 10:11 от robin_bobin » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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