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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Динамическое увеличение размера окна.  (Прочитано 5881 раз)
folax
Гость
« : Январь 09, 2017, 17:25 »

Добрый день, помогите решить проблему пожалуйста. Хочу при увеличении ширины увеличивать размер высоты окна (и наоборот). Почему не работает этот код ? Он вроде бы увеличивает окно но потом возвращается на своё место. Может есть какой то обходной путь ?

Код:
ApplicationWindow
{
    id: root
    visible: true
    width: 400
    height: 400

    function changeHeight()
    {
        root.height = root.width
    }

    onWidthChanged:
        changeHeight()
}

вызов и main.cpp

Код:
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    return app.exec();
}
Записан
vebmaster
Новичок

Offline Offline

Сообщений: 47


Просмотр профиля
« Ответ #1 : Январь 09, 2017, 18:10 »

а попробуйте прям сразу прописать в главном окне
Код:
id: root
width: 400
height: root.width
Записан
folax
Гость
« Ответ #2 : Январь 09, 2017, 20:12 »

Тот же результат. Мне кажется QQmlApplicationEngine не принимает размер от ApplicationWindow, жаль в нём нет методов для задания размеров. Будут ищё идеи ?
Записан
Отражение луны
Гость
« Ответ #3 : Январь 10, 2017, 21:15 »

Полагаю, нужно это: http://doc.qt.io/qt-5/qml-qtquick-controls-applicationwindow.html#contentItem-prop
Но проверять - не проверял.
Записан
folax
Гость
« Ответ #4 : Январь 11, 2017, 23:16 »

Полагаю, нужно это: http://doc.qt.io/qt-5/qml-qtquick-controls-applicationwindow.html#contentItem-prop
Но проверять - не проверял.

Не помогло.
Записан
folax
Гость
« Ответ #5 : Январь 11, 2017, 23:26 »

Попробовал эксперимент. Загрузил QML через QQuickView который имеет методы для задания ширины и длинны. Через void resizeEvent(QResizeEvent *ev) загоняю в QML root объект размеры окна QQuickView, потом модифицирую размер окна QQuickView, к примеру: если увеличиваем ширину то высота = ширине. И опять та же ситуация, окно вроде увеличивается, отпускаешь увеличение и идёт возврат на начальный размер. Больше нет вариантов, тему можно закрывать. Делаю графику фиксированных размеров.  Код с примером ниже, может кто то когда то доведёт дело до конца.

header

Код:
#include <QQuickView>
#include <QQuickItem>

class windowResize : public QQuickView
{
    Q_OBJECT

protected:
    void resizeEvent(QResizeEvent *ev)
    {
        QQuickItem* rootQml = rootObject();
        rootQml->setProperty("width", ev->size().width());
        rootQml->setProperty("height", ev->size().height());
        if(ev->oldSize().width() != ev->size().width())
            this->setHeight(this->width());
    }
};


source

Код:
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    windowResize view;
    view.setSource(QUrl(QStringLiteral("qrc:/main.qml")));
    view.show();

    return app.exec();
}

QML

Код:
Item
{
    id: root
    width: 400
    height: 400

    Rectangle
    {
        width: root.width
        height: root.height
        color: "red"
    }
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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