Assert uint(i) < uint(size()) in file qstring.h line 933



  • I am learning Qt and I copied this code from a book. The program did not compile and resulted in the error below:

    Desktop_Qt_5_11_1_MSVC2017_64bit-Debug\debug\RSS_Reader...
    QML debugging is enabled. Only use this in a safe environment.
    ASSERT: "uint(i) < uint(size())" in file c:\users\qt\work\qt\qtbase\src\corelib\tools\qstring.h, line 933
    

    I am attaching the files in the project, there is literally no code, just QML files. Please help !

    main.cpp

    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <QFont>
    
    int main(int argc, char *argv[])
    {
        QGuiApplication app(argc, argv);
    
    #ifdef Q_OS_WIN
        app.setFont(QFont(QString("Times New Roman")));
    #endif
    
        QQmlApplicationEngine engine;
        engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    
        return app.exec();
    }
    

    main.qml

    import QtQuick 2.3
    import QtQuick.Window 2.2
    import QtQuick.XmlListModel 2.0
    import QtQuick.Controls 1.2
    import QtQuick.Controls.Styles 1.2
    import "qrc:/"
    
    Window {
        id: mainWindow
        visible: true
        width: 720
        height: 400
        flags: Qt.Window | Qt.FramelessWindowHint
    
        TitleBar {
            id: titleBar
        }
    
        Text {
            id: windowTitle
            anchors { left: titleBar.left; leftMargin: 10; verticalCenter: titleBar.verticalCenter }
            text: "BBC News Reader"
            color: "#FFF"
            font.pointSize: 10
        }
    
        Feeds {
            id: categoriesModel
        }
    
        ListView {
            id: categories
    
            orientation: ListView.Vertical
            spacing: 3
            model:categoriesModel
            delegate: CategoriesDelegate {
                id: categoriesDelegate
                width: categories.width
            }
            property string currentUrl: categoriesModel.get(0).url
        }
    
        ScrollView {
            id: categoriesView
            contentItem: categories
            anchors { left: parent.left; top: titleBar.bottom; bottom: parent.bottom; }
            width: 0.2 * parent.width
            style: ScrollViewStyle {
                transientScrollBars: true
            }
        }
    
        XmlListModel {
            id: newsModel
    
            source: categories.currentUrl
            namespaceDeclarations: "declare namespace media = 'http://search.yahoo.com/mrss/'; declare namespace atom = 'http://www.w3.org/2005/Atom';"
            query: "/rss/channel/item"
    
            XmlRole { name: "title"; query: "title/string()" }
            XmlRole { name: "description"; query: "description/string()" }
            XmlRole { name: "link"; query: "link/string()" }
            XmlRole { name: "pubDate"; query: "pubDate/string()" }
            //XPath starts from 1 not 0 and the second thumbnail is larger and more clear
            XmlRole { name: "thumbnail"; query: "media:thumbnail[2]/@url/string()" }
        }
    
        ScrollView {
            id: newsView
            anchors { left: categoriesView.right; leftMargin: 10; right: parent.right; top: titleBar.bottom; bottom: parent.bottom }
            style: ScrollViewStyle {
                transientScrollBars: true
            }
            ListView {
                id: newsList
                model: newsModel
                delegate: NewsDelegate {
                    width: newsList.width
                }
            }
        }
    
        BusyIndicator {
            anchors.centerIn: newsView
            running: newsModel.status == XmlListModel.Loading
        }
    }
    
    

    CategoriesDelegate.qml

    import QtQuick 2.3
    
    Rectangle {
        id: delegate
        height: 80
    
        property bool selected: ListView.isCurrentItem
    
        Text {
            id: title
            anchors { left: parent.left; leftMargin: 10; right: parent.right; rightMargin: 10 }
            anchors.verticalCenter: delegate.verticalCenter
            text: name
            font { pointSize: 18; bold: true }
            verticalAlignment: Text.AlignVCenter
            wrapMode: Text.WordWrap
            scale: selected ? 1.0 : 0.8
            color: selected ? "#000" : "#AAA"
            Behavior on color { ColorAnimation { duration: 300 } }
            Behavior on scale { PropertyAnimation { duration: 300 } }
        }
    
        MouseArea {
            anchors.fill: delegate
            onClicked: {
                categories.currentIndex = index
                if(categories.currentUrl == url)
                    newsModel.reload()
                else
                    categories.currentUrl = url
            }
        }
    }
    
    

    Feeds.qml

    import QtQuick 2.3
    
    ListModel {
        ListElement { name: "Top Stories"; url: "http://feeds.bbci.co.uk/news/rss.xml" }
        ListElement { name: "World"; url: "http://feeds.bbci.co.uk/news/world/rss.xml" }
        ListElement { name: "UK"; url: "http://feeds.bbci.co.uk/news/uk/rss.xml" }
        ListElement { name: "Business"; url: "http://feeds.bbci.co.uk/news/business/rss.xml" }
        ListElement { name: "Politics"; url: "http://feeds.bbci.co.uk/news/politics/rss.xml" }
        ListElement { name: "Health"; url: "http://feeds.bbci.co.uk/news/health/rss.xml" }
        ListElement { name: "Education & Family"; url: "http://feeds.bbci.co.uk/news/education/rss.xml" }
        ListElement { name: "Science & Environment"; url: "http://feeds.bbci.co.uk/news/science_and_environment/rss.xml" }
        ListElement { name: "Technology"; url: "http://feeds.bbci.co.uk/news/technology/rss.xml" }
        ListElement { name: "Entertainment & Arts"; url: "http://feeds.bbci.co.uk/news/entertainment_and_arts/rss.xml" }
    }
    
    

    NewsDelegate.qml

    import QtQuick 2.3
    
    Column {
        id: news
        spacing: 8
    
        //used to seperate news item
        Item { height: news.spacing; width: news.width }
    
        Row {
            width: parent.width
            height: children.height
            spacing: news.spacing
    
            Image {
                id: titleImage
                source: thumbnail
            }
    
            Text {
                width: parent.width - titleImage.width
                wrapMode: Text.WordWrap
                font.pointSize: 20
                font.bold: true
                text: title
            }
        }
    
        Text {
            width: parent.width
            font.pointSize: 9
            font.italic: true
            text: pubDate + " (<a href=\"" + link + "\">Details</a>)"
            onLinkActivated: {
                Qt.openUrlExternally(link)
            }
        }
    
        Text {
            width: parent.width
            wrapMode: Text.WordWrap
            font.pointSize: 10.5
            horizontalAlignment: Qt.AlignLeft
            text: description
        }
    }
    
    

    Titlebar.qml

    import QtQuick 2.3
    
    Row {
        id: titlebar
        width: parent.width
        height: 22
        layoutDirection: Qt.RightToLeft
    
        property point mPos: Qt.point(0,0)
    
        Image {
            id: closebutton
            width: 22
            height: 22
            fillMode: Image.PreserveAspectFit
            source: "qrc:/close.png"
    
            MouseArea {
                anchors.fill: parent
                onClicked: {
                    Qt.quit()
                }
            }
        }
    
        Rectangle {
            width: titlebar.width - closebutton.width
            height: titlebar.height
            color: "#000"
    
            MouseArea {
                anchors.fill: parent
                onPressed: {
                    mPos = Qt.point(mouseX, mouseY)
                }
                onPositionChanged: {
                    mainWindow.setX(mainWindow.x + mouseX - mPos.x)
                    mainWindow.setY(mainWindow.y + mouseY - mPos.y)
                }
            }
        }
    }
    
    

Log in to reply
 

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