Important: Please read the Qt Code of Conduct -

Large virtual canvas

  • Hello, everybody.

    I try to make a view for a long-time signal. For this task i use two components: Canvas for plot and Flickable for navigation. At this way i create a large virtual canvas, canvas window and tiles with this way:

    @Canvas {
    anchors.fill: parent

    canvasSize: Qt.size(wave.width, height);
    canvasWindow: Qt.rect(flickable.contentX, 0, width, height);
    tileSize: Qt.size(width*2, height)
    onPaint: {
        /* painting */


    So, at start on canvas there is correct part of the signal drawn at range from 0 to max(canvasWindow.width, tileSize.width), but if i move outside this range there will be trash from memory. But i expect the continuation of the signal. If i move canvasWindow.x to max(canvasWindow.width, tileSize.width) than all virtual canvas will be looks like trash from memory.

    I'd like just navigate over the signal without redraw. I can't draw all signal at start because of size of the signal: it throws memory overflow error. This solution I found at article "Tiled Canvas": from documentation for Canvas.
    What do i do wrong?

    OS: Kubuntu 14.10 and Win7

  • Solved this problem with requestDraw() at event when canvas window go outside of the drawn tile(s).

Log in to reply