crossplatform.ru

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

> Динамическое размещение элементов формы., изменение размеров формы при удалении элемента
fe120
  опции профиля:
сообщение 30.1.2010, 13:12
Сообщение #1


Студент
*

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

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




Репутация:   0  


Доброго времени суток.
На своем этапе развития экспериментирую с созданием и уничтожением элементов на форме. Не использую qt designer. В качестве руководства используется Макс Шлее - QT Профессиональное программирование на C++, и соответственно принципы создания элементов описанных в этой книге.

Так вот к сути:
Есть функция создания слоя и помещения слоя в QGroupBox
Раскрывающийся текст
void Mainform::createSelect(){
    showRecordBox = new QGroupBox(trUtf8("Просмотр записей:"));
    loginButton = new QPushButton(trUtf8("Тут логин"));
    passwordButton = new QPushButton(trUtf8("Тут пароль"));
    selectLayout = new QGridLayout;
    selectLayout->setSpacing(2);
    selectLayout->setMargin(0);
    selectLayout->setAlignment(Qt::AlignTop);
    selectNameBox = new QComboBox;
    selectNameBox->setMinimumWidth(120);
    selectNameBox->addItem("lol");
    selectNameBox->addItem("lol2");
    selectNameBox->addItem("lol3");
    namesLabel = new QLabel(trUtf8("Название:"));
    loginLabel = new QLabel(trUtf8("Логин:"));
    passLabel = new QLabel(trUtf8("Пароль:"));
    showAnyInform = new QCheckBox(trUtf8("Доп. информация"));
    [b]connect(showAnyInform,SIGNAL(toggled(bool)),SLOT(changeStateShowAnyInform()));[/b]

    selectLayout->addWidget(namesLabel,0,0,1,1);
    selectLayout->addWidget(selectNameBox,0,1,1,1);
    selectLayout->addWidget(loginLabel,1,0,1,1);
    selectLayout->addWidget(loginButton,1,1,1,1);
    selectLayout->addWidget(passLabel,2,0,1,1);
    selectLayout->addWidget(passwordButton,2,1,1,1);
    selectLayout->addWidget(showAnyInform,3,0,1,2);
    showRecordBox->setMaximumWidth(showRecordBox->width());
    showRecordBox->setLayout(selectLayout);
}

сигнал (showAnyInform,SIGNAL(toggled(bool)) связан со следующей функцией:

Раскрывающийся текст
void Mainform::changeStateShowAnyInform(){
    if(showAnyInform->isChecked()) {
        formSize=showRecordBox->size();
        anyInformation = new QTextEdit;
        selectLayout->addWidget(anyInformation,4,0,1,2);
    }
    else {selectLayout->removeWidget(anyInformation);anyInformation->~QTextEdit();}
}

Итогом всего этого является следующее:


Игрался с resize(int,int), с showRecordBox->adjustSize(), showRecordBox->sizeHint(), безрезультатно, форма не принимает исходных размеров. В чем ошибка и как наиболее правильнее будет реализовать подобное.
Заранее спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 13.12.2024, 12:45