Qt Quick very slow painting



  • I have just started to look at Qt Quick and I have a very basic program, essentially the same as when you start a Qt Quick Controls application project.

    The problem is when I try to resize the window it takes a very long time to do so. This can be seen in the .gif below.

    Problem

    The only information I could find on the web about people having a similar problem was that you could use the QML Profiler to find where the lag is being generated and sometimes it is due to the debugger. So below you can see the QML profiler and the gif was recorded in release mode.

    enter image description here

    As far as I can tell the animation is locking the GUI thread up which is causing the render or repainting to be slow but I am not sure what is causing it.

    I would appreciate any help in solving the problem.

    And there is not much code to it.

    CD_Burner.pro

    QT += qml quick
    CONFIG += c++11
    SOURCES += main.cpp
    RESOURCES += qml.qrc
    QML_IMPORT_PATH =
    QML_DESIGNER_IMPORT_PATH =
    DEFINES += QT_DEPRECATED_WARNINGS
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    

    main.cpp

    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
        QGuiApplication app(argc, argv);
    
        QQmlApplicationEngine engine;
        engine.load(QUrl(QLatin1String("qrc:/main.qml")));
        if (engine.rootObjects().isEmpty())
            return -1;
    
        return app.exec();
    }
    

    main.qml

    import QtQuick 2.7
    import QtQuick.Controls 2.0
    import QtQuick.Layouts 1.3
    
    ApplicationWindow {
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")
    
        SwipeView {
            id: swipeView
            anchors.fill: parent
            currentIndex: tabBar.currentIndex
    
            Page1 {
                Label {
                    text: qsTr("First page")
                    anchors.centerIn: parent
                }
            }
    
            Page {
                Label {
                    text: qsTr("Second page")
                    anchors.centerIn: parent
                }
            }
    
            Page {
                Label {
                    text: qsTr("Third page")
                    anchors.centerIn: parent
                }
            }
        }
    
        footer: TabBar {
            id: tabBar
            currentIndex: swipeView.currentIndex
            TabButton {
                text: qsTr("First")
            }
            TabButton {
                text: qsTr("Second")
            }
            TabButton {
                text: qsTr("Third")
            }
        }
    }
    

    Page1.qml

    import QtQuick 2.7
    
    Page1Form {
        button1.onClicked: {
            console.log("Button Pressed. Entered text: " + textField1.text);
        }
    }
    

    Page1Form.ui.qml

    import QtQuick 2.7
    import QtQuick.Controls 2.0
    import QtQuick.Layouts 1.3
    
    Item {
        property alias textField1: textField1
        property alias button1: button1
    
        RowLayout {
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.topMargin: 20
            anchors.top: parent.top
    
            TextField {
                id: textField1
                placeholderText: qsTr("Text")
            }
    
            Button {
                id: button1
                text: qsTr("Press Me")
            }
        }
    }
    

    Specs: Windows 10, Qt 5.9, MSVC 2017


    SO Cross Post


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.