Qt World Summit: Submit your Presentation

QQuickView with frameless window hint - fails if QQuickView::setSource is called

  • I have a Qt Qml application based in a QQuickView window. It works great on OSX/Linux/Windows.

    On Windows 10 (but I've not tried on other operating systems yet), if I add a frameless window hint to the QQuickView window's flag, I get exactly the window I desired (as expected.)

    If I do the same thing and then call setSource( "myqml.qml" ) on that QQuickView, the window will fail to display although the taskbar will show that the application window (the QQuickView.) Note that the setSource call happens after the ::show() call (I tried hiding it, then calling setSource, then unhiding in case there was some window reconstruction issue - but no luck.)

    When this happens, the console output shows: "QSGThreadedRenderLoop: expose event received for window QQuickView(0xc6eb8fef68) with invalid geometry: QRect(-1357,226 0x0) on QScreen(0x277c048c960, name=\.\DISPLAY3)"

    This is the same display that shows successfully if I don't call setSource.

    If the QML file is completely empty or only contains import statements - the window shows properly.
    If I add just the following:

    Rectangle {
    color: "red"

    The window fails to show.

    Interestingly if I give the rectangle a specific size like this:

    Rectangle {
    width: 100
    height: 100
    color: "red"
    border.color: "black"
    border.width: 5
    radius: 10

    Then I do not get the window without a title bar, I get a window exactly the size of the rect and because I gave the corners a radius, I see a white background where the corners would normally be (indicating to me that the window size has shrunk to the size of the rect.)

    Anybody know how to fix this?

    I would expect the same behavior as when there is a titlebar... Is that wrong?


  • Ahhh, I think that because the base rect in my qml code doesn't define a size (which gives it parent fill properties) and the frameless window doesn't have a parent (which was presumably previously the window frame itself.)

    Strange because I tried defining a minimum size for the QQuickView and then loading the qml and that didn't work.

    Anyhow, not sure if this is a bug or expected behavior (by the implementors) - I suspect the latter.

    I can easily work around by giving the qml base rect a size.

  • I think(but i might be wrong) that it's true with regards to almost all QML visual items - by default, their size is 0x0. With an exception of Image which gets its default size from the picture it shows, and perhaps some others?. Anyway, that's what makes defining proper height/width and/or anchors of all visible Items mandatory.

Log in to reply