crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Про QVBoxLayout и про addStretch()
CoderOl
  опции профиля:
сообщение 13.3.2011, 15:35
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 13.3.2011
Пользователь №: 2494

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!
Помогите пожалуйста разобраться.

Хочу получить такое окно
Прикрепленное изображение


Вот часть исходного кода


cPass::cPass(QWidget *parent): QDialog(parent)
{
    resize(1024,768);

    fr1= new QFrame;
    fr1->move(4,4);
    fr1->setFrameShape(QFrame::Panel);
    fr1->setFrameShadow(QFrame::Raised);//QFrame::Sunken

    fr2= new QFrame;
    fr2->move(4,4);

    //fr2->setContentsMargins(4,4,500,200);
    fr2->setFrameShape(QFrame::Panel);
    fr2->setFrameShadow(QFrame::Sunken);//QFrame::

    QHBoxLayout *xlayout = new QHBoxLayout;
    xlayout->setMargin(4);
    xlayout->addWidget(fr2);
    fr1->setLayout(xlayout);

//////////////////////////////////////////////////////////
    fr3= new QFrame;
    fr3->move(4,4);
    fr3->setContentsMargins(4,4,500,200);
    fr3->setMinimumHeight(100);
   fr3->setMaximumHeight(100);
    fr3->setFrameShape(QFrame::Panel);
    fr3->setFrameShadow(QFrame::Raised);

    fr4= new QFrame;
    fr4->setFrameShape(QFrame::Panel);
    fr4->setFrameShadow(QFrame::Sunken);
    lb1= new QLabel(tr("Password"));
    lb1->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Minimum);
    cb1=new QComboBox;
    pb1= new QPushButton(tr("12345"));

   [color="#FF0000"][b]
  QVBoxLayout *l22 = new QVBoxLayout();
   l22->addStretch();  //???????????????????????????????????????????????????
    l22->addWidget(lb1);
  //l22->addStretch();
    l22->addWidget(cb1);
  // l22->addStretch();[/b]
  [/color]  
QHBoxLayout *l3 = new QHBoxLayout;
      l3->addLayout(l22);
      l3->addWidget(pb1);

     fr4->setLayout(l3);

    QHBoxLayout *layout = new QHBoxLayout;
    layout->setMargin(4);
    layout->addWidget(fr4);

    fr3->setLayout(layout);

/////////////////////////////////////////////////// /////////////////////////////
    fr5= new QFrame;
    fr5->setMinimumHeight(70);
    fr5->setMaximumHeight(70);;
    fr5->setFrameShape(QFrame::Panel);
    fr5->setFrameShadow(QFrame::Raised);

    fr6= new QFrame;
    fr6->setFrameShape(QFrame::Panel);
    fr6->setFrameShadow(QFrame::Sunken);
    continueButton = new QPushButton(tr("Continue"));
    exitButton = new QPushButton(tr("Exit"));
    connect(exitButton,SIGNAL(clicked()),this,SLOT(close()));

    QHBoxLayout *l1 = new QHBoxLayout;
    l1->addStretch();
    l1->addWidget(continueButton);
    l1->addStretch();
    l1->addWidget(exitButton);
    l1->addStretch();
    fr6->setLayout(l1);

    QHBoxLayout *layoutq = new QHBoxLayout;
    layoutq->setMargin(4);
    //layoutq->addStretch();
    layoutq->addWidget(fr6);

    fr5->setLayout(layoutq);

    QVBoxLayout * mainLayout = new QVBoxLayout;
     mainLayout->setMargin(4);
     mainLayout->addWidget(fr1);
     mainLayout->addWidget(fr3);
     mainLayout->addWidget(fr5);

     setLayout(mainLayout);

}



когда использую строку:

l22->addStretch();

то мои QFrame расползаются вдребаган, вот так

Прикрепленное изображение


Подскажите пожалуйста, что я не так делаю, и примерно в каком направлении копать. Я новичок в QT, до этого программировал в Builder'e.
Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Phoenix_nsk
  опции профиля:
сообщение 13.3.2011, 15:46
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 57
Регистрация: 12.3.2011
Пользователь №: 2491

Спасибо сказали: 0 раз(а)




Репутация:   0  


Для начала предложение: воспользоваться Qt Designer.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 13.3.2011, 16:45
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


А так?
l22->addStretch(10);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
CoderOl
  опции профиля:
сообщение 13.3.2011, 18:02
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 13.3.2011
Пользователь №: 2494

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(RazrFalcon @ 13.3.2011, 16:45) *
А так?
l22->addStretch(10);


Не помогло :unsure:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 13.3.2011, 18:04
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Хммм...
А В Чем проблема?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
CoderOl
  опции профиля:
сообщение 13.3.2011, 19:37
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 13.3.2011
Пользователь №: 2494

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(RazrFalcon @ 13.3.2011, 18:04) *
Хммм...
А В Чем проблема?

Надо сделать окно с тремя рамками (типа QFrame) как на первом фото. Разрешение экрана куда будет выводиться окно, пока неизвестно. Необходимо чтобы рамки растягивались при изменении разрешения экрана.
это вроде сделал. Выставил минимальную и максимальную высоту (fr3->setMinimumHeight(100); fr3->setMaximumHeight(100);)
Хочу сделать чтобы при изменении размеров средней рамки, для красоты QLabel и QComboBox отрисовывались по центру, вот примерно вот так:
 QVBoxLayout *l22 = new QVBoxLayout();
// l22->addStretch();  //???????????????????????????????????????????????????
    l22->addWidget(lb1);
// l22->addStretch();
    l22->addWidget(cb1);
  // l22->addStretch();


При таком коде QLabel и QComboBox делит размер пополам и выводится в QVBoxLayout нормально. Но стоит раскоментировать хоть один l22->addStretch(); все расползается, см. второе фото. Хотелось бы узнать есть ли какие тонкости при использовании QVBoxLayout , и где в коде я ошибся?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 13.3.2011, 19:54
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


воспроизведи свои действия в дизайнере, он визуально покажет поведение распорки
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.9.2022, 11:43