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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT Croupbox  (Прочитано 3632 раз)
Акось
Гость
« : Февраль 28, 2012, 16:29 »

Здравствуйте! я хотела спросить у вас насчет groupBox. Нужно создать label, combobox<-horizontal;  dva groupbox<-horizontal,  i buttony("Ok" i "Cancel") <-toje horizontal. а вот эти три horizontal layouta raspolojeny vertikal'no. ya napisala kod, no kogda kompiliruyu vydaet owibku addChild layout layout "" has already parent;    В чем проблема? Спасибо)

vot kod v Dialog.cpp:

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    label = new QLabel("Printer: ");
    cbox = new QComboBox();
    cbox->addItem("Office Printer");
    cbox->addItem("Printer Canon");
    cbox->addItem("Printer HP Laser Jet");

    QHBoxLayout *toplayout = new QHBoxLayout;
    toplayout->addWidget(label);
    toplayout->addWidget(cbox);

    rbtn1 = new QRadioButton("Landscape");
    rbtn2 = new QRadioButton("Portrait");

    gbox1 = new QGroupBox("Page Orientation");
    QVBoxLayout *grouplayout = new QVBoxLayout(gbox1);
    grouplayout->addWidget(rbtn1);
    grouplayout->addWidget(rbtn2);

    rbtn3 = new QRadioButton("Black and White");
    rbtn4 = new QRadioButton("Color");

    gbox2 = new QGroupBox("Color Options");
    QVBoxLayout *grouplayout1 = new QVBoxLayout;
    grouplayout1->addWidget(rbtn3);
    grouplayout1->addWidget(rbtn4);

    QHBoxLayout *middlelayout = new QHBoxLayout;
    middlelayout->addLayout(grouplayout);
    middlelayout->addLayout(grouplayout1);

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addLayout(toplayout);
    layout->addLayout(middlelayout);

    btn1 = new QPushButton("Ok");
    btn2 = new QPushButton("Cancel");

    QHBoxLayout *bottomLayout = new QHBoxLayout;
    bottomLayout->addSpacerItem(new QSpacerItem(40,10));
    bottomLayout->addWidget(btn1);
    bottomLayout->addWidget(btn2);

    QVBoxLayout *outerlayout = new QVBoxLayout;
    outerlayout->addLayout(layout);
    outerlayout->addSpacerItem(new QSpacerItem(1,15));
    outerlayout->addLayout(bottomLayout);

    setLayout(outerlayout);
}

Dialog::~Dialog()
{

}
Записан
mutineer
Гость
« Ответ #1 : Февраль 28, 2012, 16:46 »

на какие строки ругается?
Записан
Акось
Гость
« Ответ #2 : Февраль 28, 2012, 16:52 »

на какие строки ругается?

ни на какие не знаю просто внизу появляется вот такая ошибка:

Запускается C:\Qt\2010.05\qt\printing-build-desktop\debug\printing.exe...
QLayout::addChildLayout: layout "" already has a parent
C:\Qt\2010.05\qt\printing-build-desktop\debug\printing.exe завершился с кодом -1073741819

и выходит какое-то окно с ошибкой "Инструкция по адресу"0х0059bb39" обратилась к памяти по адресу "0х00000000". Память не может быть "read""
Записан
mutineer
Гость
« Ответ #3 : Февраль 28, 2012, 16:58 »

QVBoxLayout *grouplayout = new QVBoxLayout(gbox1);
...
middlelayout->addLayout(grouplayout);

Убери парента у grouplayout
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4732



Просмотр профиля WWW
« Ответ #4 : Февраль 28, 2012, 17:02 »

вместо middlelayout->addLayout(grouplayout) надо middlelayout->addWidget(gbox1)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Акось
Гость
« Ответ #5 : Февраль 28, 2012, 17:11 »

QVBoxLayout *grouplayout = new QVBoxLayout(gbox1);
...
middlelayout->addLayout(grouplayout);

Убери парента у grouplayout

Spasibo!!! programma zarabotala))) poyavilsya drugoi vopros) как можно задать в groupbox тему например, Page Orientation: Landscape ili Portrait;  Color Options: Black and White ili Color?  Landscape, portrait, black and white, color - это наши радиобаттоны, а что насчет Page Orientation i Color Options? Спасибо
Записан
mutineer
Гость
« Ответ #6 : Февраль 28, 2012, 17:26 »

QVBoxLayout *grouplayout = new QVBoxLayout(gbox1);
...
middlelayout->addLayout(grouplayout);

Убери парента у grouplayout

Spasibo!!! programma zarabotala))) poyavilsya drugoi vopros) как можно задать в groupbox тему например, Page Orientation: Landscape ili Portrait;  Color Options: Black and White ili Color?  Landscape, portrait, black and white, color - это наши радиобаттоны, а что насчет Page Orientation i Color Options? Спасибо

Ниче не понял
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4732



Просмотр профиля WWW
« Ответ #7 : Февраль 28, 2012, 19:14 »

для начала надо посмотреть на доступные методы QGroupBox (и QWidget), ещё можно стилями пользоваться
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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