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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выравнивание QML содержимого в QWidget  (Прочитано 5596 раз)
Norad
Гость
« : Январь 15, 2015, 09:56 »

Добрый день! Возможно ли сделать так, чтобы QML содержимое виджета центрировалось при растягивании окна программы? До этого делал и отображал только фиксированные значения. QML на виджете отображаю таким образом:
Код:
view = new QQuickView;
    QWidget *container = QWidget::createWindowContainer(view, ui->widget);
    QHBoxLayout *layout = new QHBoxLayout(ui->widget);
    layout->addWidget(container);
    ui->widget->setLayout(layout);
    view->setSource(QUrl("qrc:/main.qml"));

Для начала хотел отцентрировать левый верхний угол квадрата 50х50 по центру виджета, но не вышло - выдает следующую ошибку : Unable to assign QQuickAnchorLine to double Грустный
Содержимое QML файла:
Код:
import QtQuick 2.0

Item {
    id: par

    width: 100
    height: 100
    anchors.fill: parent
    Rectangle {
        color: "red"
        x: par.verticalCenter
        y: par.horizontalCenter
        height:50
        width: 50


    }
}

Заранее спасибо за ответы!
Записан
arhohryakov
Гость
« Ответ #1 : Январь 15, 2015, 11:52 »

Пишут почти по-русски: нельзя назначить один тип (QQuickAnchorLine ) другому (double).
x - double, par.verticalCenter - QQuickAnchorLine
Нужно привязать якоря к якорям. Как-то так:
Код:
import QtQuick 2.0

Item {
    id: par

    width: 100
    height: 100
    anchors.fill: parent
    Rectangle {
        color: "red"
        anchors.top: par.verticalCenter
        anchors.left: par.horizontalCenter
        height:50
        width: 50
    }
}
Записан
Norad
Гость
« Ответ #2 : Январь 15, 2015, 13:07 »

Спасибо, это работает) Но вот ведь не задача - как сделать так, чтобы Item занимал все пространство виджета? Я думал anchors.fill: parent сработает, но нет, ведь Widget родительским объектом для Item не является. Похоже, что мне нужно считывать значения размера виджета и передавать их в QML. Может есть другие варианты?)
Записан
RSATom
Гость
« Ответ #3 : Январь 15, 2015, 13:31 »

Для решения проблемы нужно сделать 2 вещи:
1) Заставить QQuickView изменять  размер в соответствии с размером окна на котором он лежит (например через layout'ы)
2) Выставить resizeMode в QQuickView::SizeRootObjectToView
Записан
RSATom
Гость
« Ответ #4 : Январь 15, 2015, 13:34 »

ну и
Код
   width: 100
   height: 100
   anchors.fill: parent
 
стоит убрать
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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