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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Добавление layout`ов  (Прочитано 2074 раз)
Евгений
Гость
« : Июль 28, 2013, 09:55 »

Есть простое диалоговое окно. Решил при клике по кнопке давить в окно layout с виджетами. Но компилятор ругается. Есть возможность добавлять layout`ы вне конструктора?

 
Код:
#include "dialog.h"
#include "ui_dialog.h"
#include "mytask.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    QHBoxLayout *nTask = new QHBoxLayout(this);
    QPushButton *start = new QPushButton("start",this);
    QPushButton *cancel = new QPushButton("cancel",this);
    QPushButton *pause = new QPushButton("pause",this);
    nTask->addWidget(start);
    nTask->addWidget(cancel);
    nTask->addWidget(pause);
    layout()->addItem(nTask);



}

Dialog::~Dialog()
{
    delete ui;
}


void Dialog::on_pushButton_clicked()
{
    QHBoxLayout *mTask = new QHBoxLayout(this);
    QPushButton *start2 = new QPushButton("start 2",this);
    QPushButton *cancel2 = new QPushButton("cancel 2",this);
    mTask->addWidget(start2);
    mTask->addWidget(cancel2);
    layout()->addItem(mTask);

}
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Июль 28, 2013, 11:38 »

У вас layout вообще к виджету прикреплен? Улыбающийся
Попробуйте в конструкторе перед layout() прописать, например,
Код:
setLayout(new QHBoxLayout());
Потому что по дэфолту у виджета нет компоновщика (layout) и его нужно сначало добавить
Записан

Bepec
Гость
« Ответ #2 : Июль 28, 2013, 12:04 »

Тоже встречал данную проблему. По умолчанию там есть layout. Но невнятный. Сменить его в рантайме - я такого не нашёл. Плюнул и переделал архитектуру.
Записан
Majestio
Гость
« Ответ #3 : Июль 29, 2013, 22:42 »

Есть простое диалоговое окно. Решил при клике по кнопке давить в окно layout с виджетами. Но компилятор ругается. Есть возможность добавлять layout`ы вне конструктора?
Смотри примерчик в аттаче.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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