Название: Widget не растягивается на весь экран Отправлено: Dastes от Июнь 18, 2012, 19:09 Здравствуйте.
Если элементов мало, то Qscrollarea растягивается до требуемого размера. Если элементов поболее, то растягивается где-то до трети экрана, а дальше включается полоса перемотки. Что сделать, что бы Qscrollarea/QGroupBox/QWidget растягивались на все свободное место на экране, вне зависимости от кол-ва элементов в QGridLayout? Пробовал применять setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding), но не помогло. Код: ilw= new QWidget; Название: Re: Widget не растягивается на весь экран Отправлено: Bepec от Июнь 18, 2012, 19:25 вы у этого l22 параметры посмотрите. А самый лучший вариант - откройте дизайнер, попробуйте сделать то же самое в нём. Поиграйтесь с параметрами. А потом когда поймёте - пишите так.
Название: Re: Widget не растягивается на весь экран Отправлено: Dastes от Июнь 19, 2012, 20:55 Понял, только, что основная проблема в scroll area. Если прописать ей внушительную минимальную высоту, то растягивается отлично, а иначе занимает не более 200px на экране, хотя есть куда растягиваться.
Есть какие-нибудь идеи, что и где можно поменять? Название: Re: Widget не растягивается на весь экран Отправлено: Bepec от Июнь 19, 2012, 21:05 Всё везде, исходя из вашего огрызка кода :D
Название: Re: Widget не растягивается на весь экран Отправлено: shirushizo от Июнь 20, 2012, 13:05 Указать необходимый stretch в этой строке
Код: l22->addWidget(scrollArea,1); А лучше: 1. взять лист бумаги нарисовать _всю_ компоновку от руки; 2. продумать что и как будет изменять размеры, при изменении размера и/или пропорций окна; 3. проанализировать взаимное расположение элементов и принять решение о том, какие компоновщики нужны и что в них будет находиться; 4. продумать примерные значения параметров stretch, context margin, size policy, minimum/maximum width/height и пр. для всех виджетов и компоновщиков 5. реализовать и отладить на компе И делать это каждый раз для каждого диалога до тех пор, пока не будешь все это делать на лету в голове. Это так же важно, как и построение блок-схем _до_ начала разработки. Удачи. Название: Re: Widget не растягивается на весь экран Отправлено: Dastes от Июнь 20, 2012, 21:20 Уже отчаялся >:(
Вырезал все лишнее, кроме злополучной части. Кому не сложно, гляньте пожалуйста. http://zalil.ru/33479726 (http://zalil.ru/33479726) Название: Re: Widget не растягивается на весь экран Отправлено: Bepec от Июнь 20, 2012, 21:42 Слишком ты себя накрутил.
Совет - пользуйся дизайнером. Он проще, удобнее и БЫСТРЕЕ в отладке ;) Твоя проблема в 1 строчке :D вместо Код: mainLayout->addWidget(IBListGroupBox, 1, Qt::AlignTop); Код: mainLayout->addWidget(IBListGroupBox); void QBoxLayout::addWidget ( QWidget * widget, int stretch = 0, Qt::Alignment alignment = 0 ) If the stretch factor is 0 and nothing else in the QBoxLayout has a stretch factor greater than zero, the space is distributed according to the QWidget:sizePolicy() of each widget that's involved. The alignment is specified by alignment. The default alignment is 0, which means that the widget fills the entire cell. PS читать надо внимательнее. И да - отладил большую часть гуи в дизайнере, потом хоть упишись в новом проекте, его описывая. А перед глазами будет пример :D Название: Re: Widget не растягивается на весь экран Отправлено: _OLEGator_ от Июнь 20, 2012, 21:45 to Bepec
имхо, на самом деле ручками интерфейс по началу лучше писать - поймешь что к чему, а не бездумно в дизайнере накидывать все и подгадывать нужный результат. а тут на лицо еще не умение пользоваться документацией... Название: Re: Widget не растягивается на весь экран Отправлено: Bepec от Июнь 20, 2012, 21:52 Не. Поспорю - по примерам делать интерфейс ручками с самого начала - плохо. Очень плохо. Ибо примеры почти у всех, начиная от Бланша создаются динамически с многими оговорками.
Дизайнер тут в роли дебагера выступает и когда надо что-то написать статичное, лучше его нет. И не убеждай, что не меняющийся интерфейс проще в коде описать :D А динамика выступает, уже в дальнейшем. Когда формы становятся динамическими, непостоянных размеров и нестандарных модификаций :) Когда ты ЗНАЕШЬ, чего хочешь. А не тыкаешься вслепую в коде. PS да, дизайнер проще, но от простого к сложному - именно так шла эволюция :D Название: Re: Widget не растягивается на весь экран Отправлено: Dastes от Июнь 20, 2012, 22:07 Bepec, благодарю.
Вспомнил зачем прописал выравнивание по верху. Когда слишком мало строк в таблице, то всю содержание группы находится по низу. Помню, что кроме этого не нашел решения, и как то не заметил, что это влияет на фактор растягивания. Как сделать так, что бы содержание по верху было? Название: Re: Widget не растягивается на весь экран Отправлено: Bepec от Июнь 20, 2012, 22:29 Spacer вставить вниз.
Название: Re: Widget не растягивается на весь экран Отправлено: Dastes от Июнь 21, 2012, 16:58 Bepec, добавил вниз спейсер. Работает, только когда размер окна по вертикали ~ 400px и менее, а если больше, то съезжает вниз.
Код: QSpacerItem* spacer = new QSpacerItem( 1, 1, QSizePolicy::Expanding, В чем я ошибся? Название: Re: Widget не растягивается на весь экран Отправлено: Bepec от Июнь 21, 2012, 17:43 Попробуй не указывать ему sizePolicy. Аля
Код: QSpacerItem* spacer = new QSpacerItem( 1, 1); PS я ещё раз повторюсь - лучше сначала всё делать в дизайнере. Когда разберёшься как работают политики, растяжение. Как реагируют поля и виджеты на это - вот тогда и начинай писать. Название: Re: Widget не растягивается на весь экран Отправлено: Dastes от Июнь 21, 2012, 17:50 Попробуй не указывать ему sizePolicy. Аля Не работает. В дизайнере спейсер нарисовал, вроде нормально себя ведет.Код: QSpacerItem* spacer = new QSpacerItem( 1, 1); PS я ещё раз повторюсь - лучше сначала всё делать в дизайнере. Когда разберёшься как работают политики, растяжение. Как реагируют поля и виджеты на это - вот тогда и начинай писать. Название: Re: Widget не растягивается на весь экран Отправлено: Bepec от Июнь 21, 2012, 17:59 Хз. Кода нет, что ты там сделал я незнаю.
PS намёк тонкий. Название: Re: Widget не растягивается на весь экран Отправлено: Dastes от Июнь 21, 2012, 18:08 Хз. Кода нет, что ты там сделал я незнаю. PS намёк тонкий. http://zalil.ru/33484316 (http://zalil.ru/33484316) Название: Re: Widget не растягивается на весь экран Отправлено: Bepec от Июнь 21, 2012, 19:16 Код: QSpacerItem* spacer = new QSpacerItem( 20, 40); Название: Re: Widget не растягивается на весь экран Отправлено: Dastes от Июнь 21, 2012, 19:22 Тоже не работает :(
Название: Re: Widget не растягивается на весь экран Отправлено: Bepec от Июнь 21, 2012, 19:27 Код: #include <QtGui> Название: Re: Widget не растягивается на весь экран Отправлено: Dastes от Июнь 21, 2012, 19:38 В этом варианте у scrollarea фиксированный размер, не растягивается по горизонтали.
Помоги пожалуйста добить до конца :) Название: Re: Widget не растягивается на весь экран Отправлено: Bepec от Июнь 21, 2012, 21:14 Бесит ) Всё бесит :D Код, названия переменных, куча указателей, цикл,игры с лейаутами. РРрРРРррРРррРРр...
Завтра посмотрю. Седни могу только завтраком накормить, иначе сорвусь. НУ НЕЛЬЗЯ ЖЕ ТАК ПЕРЕМЕННЫЕ НАЗЫВАТЬ млиать! Краткая история программы. Жил да был argcNumb=argc; Был у него IBListGroupBox. Жил спокойно, поживал, строил свой истребитель ilw(Ил штурмовик будущего серии "W"). И растягивал он свой штурмовик. И туда, и сюда. Потом раз и подумал - надо же на него и scrollArea натянуть, чтобы враг его не замечал. И начал его тоже растягивать, рамки невидимыми делать. Тут раз - дождь. Ну что поделать - надо ангар сделать для ilw. И построил он сарай, и назвад его gLayout(прекрасное название). И много много мелких лейблов было. Все они были одинаковыми, отличались только именами. Тот Логин, тот Пароль, а тот вообще Наименование!!! И начал он их в gLayout пихать. Да не все разом, а по одному. Первый раз сходил - запыхался. Подумал и цикл сделал. И начал всякие виджеты клепать полезные(видимо гаджеты к ИЛу) и по одному и начал их таскать. И ведь что главное - каждое имя их он запоминал и сохранял! Но тут... Сгустились тучи, пошёл град, блеснули молнии и появился ОН! l22! Втройне заторопился дед. Натянул по быстрому gLayout на ilw. А l22 всё ближе! Вышел дед на смертный бой, одолел супостата l22 и всунул ему в *ад почти готовую scrollArea. Да ещё и spacer сделал и туда же упихал!!! Взвыл l22 и затих. А дед быстро быстро mainLayout создаёт, в него IBListGroupBox пихает, и всё это на Window вешает, надпись пишет похабную "1c backup" и ресайзит её до нужных кондиций. Вот и cpp конец, а кто слушал молодец. Название: Re: Widget не растягивается на весь экран Отправлено: alexis031182 от Июнь 21, 2012, 21:18 Интересная реакция, эмоционально :)
Название: Re: Widget не растягивается на весь экран Отправлено: Dastes от Июнь 21, 2012, 21:23 :)
Не спорю, названия переменных далеки до идеала. Горбатого могила исправит >:( Название: Re: Widget не растягивается на весь экран Отправлено: Bepec от Июнь 21, 2012, 22:05 Секунда поэзии:
Могила расправляет скелет, А человека то и нет :D PS АРРРРРг * ушёл есть пингви пингви* |