Russian Qt Forum

Qt => Общие вопросы => Тема начата: robin_bobin от Октябрь 11, 2012, 13:12



Название: Сложная компоновка виджетов
Отправлено: 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 (http://hostingkartinok.com/show-image.php?id=43084c47ca972210f5aba55403216854)


Название: Re: Сложная компоновка виджетов
Отправлено: GreatSnake от Октябрь 11, 2012, 13:33
3) третий виджет это Cobobox. после него я добавил Stretch
Наверное причина в этом.


Название: Re: Сложная компоновка виджетов
Отправлено: robin_bobin от Октябрь 11, 2012, 14:45
3) третий виджет это Cobobox. после него я добавил Stretch
Наверное причина в этом.

да, спасибо. теперь я не могу узнать размеры комбобоксов до тех пор, пока форма не отобразилась. если задаю ширину 100 до появления, то всё работает как надо.. как узнать ширину комбобоксов до появления или при появлении окна?


Название: Re: Сложная компоновка виджетов
Отправлено: kambala от Октябрь 11, 2012, 20:20
showEvent


Название: Re: Сложная компоновка виджетов
Отправлено: GreatSnake от Октябрь 11, 2012, 21:31
Либо перегрузить setVisible() top-level окна либо самого QComboBox.


Название: Re: Сложная компоновка виджетов
Отправлено: robin_bobin от Октябрь 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