Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: blood_shadow от Август 21, 2010, 11:22



Название: изменение размеров виджета
Отправлено: blood_shadow от Август 21, 2010, 11:22
Есть готовая программа состоящая с двух вертикально разположенных виджетов(вверху QTextEdit внизу QTableWidget), оба они помещены в вертикальный менеджер компоновки:

(http://img.pixs.ru/storage/1/0/5/strJPG_8771411_904105.jpg)

Вопрос - Как сделать чтобы пользователь имел возможность изменять размер допустим QTextEdit (уменьшать и увеличивать за счет другого виджета)?


Название: Re: изменение размеров виджета
Отправлено: BRE от Август 21, 2010, 11:28
Посмотри на класс QSplitter.


Название: Re: изменение размеров виджета
Отправлено: blood_shadow от Август 21, 2010, 14:11
Посмотри на класс QSplitter.
два элемента а именно QTextEdit и QTableWidget, разместить не проблема, однако между ними находится менеджер компоновки QHBoxLayout
в котором лежат кнопка, ComboBox + растяжка + 2 кнопки

Код:
    textIn = new QTextEdit("no text in file");
    textOut = new QTextEdit("Please, click button Run");
    runButton = new QPushButton("Run");
    undoButton = new QPushButton("Undo");
    hideButton = new QPushButton("Hide");
    changeChoiceCombo = new QComboBox;
    changeChoiceCombo->addItem("1");
    changeChoiceCombo->addItem("2");
    changeChoiceCombo->addItem("3");
    changeChoiceCombo->addItem("4");
    changeChoiceCombo->addItem("5");
    tableWidget = new QTableWidget;
    undoButton->setEnabled(false); //disabled button "Undo"

    //creating interface
    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(undoButton);
    layout->addWidget(changeChoiceCombo);
    layout->addStretch();
    layout->addWidget(hideButton);
    layout->addWidget(runButton);
    QVBoxLayout *main_Layout = new QVBoxLayout;

    main_Layout->addWidget(textIn);
    main_Layout->addLayout(layout);
    main_Layout->addWidget(tableWidget);
   
    setLayout(main_Layout);


Как сделать чтобы можно было перемещать вместе с этим менеджером компоновки QHBoxLayout?


Название: Re: изменение размеров виджета
Отправлено: BRE от Август 21, 2010, 14:12
Так ты положи кнопки и нижнюю таблицу на отдельный виджет, скомпонуй их и вот его добавь в сплитер.  :)


Название: Re: изменение размеров виджета
Отправлено: blood_shadow от Август 21, 2010, 14:33
Так ты положи кнопки и нижнюю таблицу на отдельный виджет, скомпонуй их и вот его добавь в сплитер.  :)
Спасибо! и как я до этого не додумался  :)


Название: Re: изменение размеров виджета
Отправлено: virtual_root от Декабрь 27, 2010, 16:58
У меня такая же проблема. Я добавила QSplitter, но результата нет. Подскажите,пожалуйста,что я не так написала:
 
Код:
   splitter = new QSplitter;
   splitter->addWidget(&treeview);
    Layout.addWidget(menuBar,0,0,1,1);
    Layout.addWidget(&treeview,1,0,1,1);
    Layout.addWidget(splitter,1,1,1,1);
    Layout.addWidget(&tabwidget,1,1);
    Layout.setColumnStretch(1,100);
    setLayout(&Layout);
Сами элнменты описаны в файле .h


Название: Re: изменение размеров виджета
Отправлено: Пантер от Декабрь 27, 2010, 17:08
splitter->addWidget(&treeview);
Layout.addWidget(&treeview,1,0,1,1);

В этом ошибка.


Название: Re: изменение размеров виджета
Отправлено: virtual_root от Декабрь 28, 2010, 12:00
спасибо,получилось) я добавила в сплиттер ещё один виджет и всё заработало)