Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Using Tree Model to Store Data?

Using Tree Model to Store Data?

Scheduled Pinned Locked Moved Unsolved General and Desktop
3 Posts 3 Posters 572 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    AlexanderAlexander
    wrote on 6 Jan 2020, 01:52 last edited by AlexanderAlexander 1 Jun 2020, 02:09
    #1

    Currently:
    I have created and populated a QTreeWidget with QTreeWidgetItems, and have set the text of the QTreeWidgetItems

    Problem: I have no idea how to actually utilize the QTreeWidgetItems for data storage
    Looking at: https://doc.qt.io/qt-5/qt.html#ItemDataRole-enum

    void QTreeWidgetItem::setData(int column, int role, const QVariant &value)
    

    I see that I can use a Qt::ItemDataRole to specify the type of data stored, but none of the options in the enumeration pertain to actually storing raw data, only Qt properties.

    Questions:

    • How would I store actual data, such as doubles, within a WTreeWidgetItem?

    • If I am not supposed to actually store data within the tree items, do I need to use an auxilary structure and use model indexes with internal pointers to link the 2 together?

    Info:

    • Qt5 (c++)

    • MSVC 2017 + Qt Designer[link text](link url)

    V 1 Reply Last reply 6 Jan 2020, 09:36
    0
    • C Offline
      C Offline
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on 6 Jan 2020, 06:01 last edited by
      #2

      @AlexanderAlexander said in Using Tree Model to Store Data?:

      How would I store actual data, such as doubles, within a WTreeWidgetItem?

      You can store whatever you want in the QVariant.

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      1 Reply Last reply
      2
      • A AlexanderAlexander
        6 Jan 2020, 01:52

        Currently:
        I have created and populated a QTreeWidget with QTreeWidgetItems, and have set the text of the QTreeWidgetItems

        Problem: I have no idea how to actually utilize the QTreeWidgetItems for data storage
        Looking at: https://doc.qt.io/qt-5/qt.html#ItemDataRole-enum

        void QTreeWidgetItem::setData(int column, int role, const QVariant &value)
        

        I see that I can use a Qt::ItemDataRole to specify the type of data stored, but none of the options in the enumeration pertain to actually storing raw data, only Qt properties.

        Questions:

        • How would I store actual data, such as doubles, within a WTreeWidgetItem?

        • If I am not supposed to actually store data within the tree items, do I need to use an auxilary structure and use model indexes with internal pointers to link the 2 together?

        Info:

        • Qt5 (c++)

        • MSVC 2017 + Qt Designer[link text](link url)

        V Offline
        V Offline
        VRonin
        wrote on 6 Jan 2020, 09:36 last edited by
        #3

        @AlexanderAlexander said in Using Tree Model to Store Data?:

        I can use a Qt::ItemDataRole to specify the type of data stored

        No. the Qt::ItemDataRole is just a "hint" about what you are storing. the type of data is completely determined by the variant. In all Qt native models Qt::DisplayRole and Qt::EditRole are exactly the same

        I have no idea how to actually utilize the QTreeWidgetItems for data storage

        Examples:

        • Set the text of the item in the first column: item->setData(0,Qt::DisplayRole,QStringLiteral("Hello"));
        • Set a numerical value as displayed in the first column: item->setData(0,Qt::DisplayRole,3.14);
        • Set the text colour for the the item in the first column: item->setData(0,Qt::ForegroundRole,QBrush(Qt::red));
        • Store a value that your program will use later: item->setData(0,Qt::UserRole,5);
        • Store another value that your program will use later: item->setData(0,Qt::UserRole+1,35);

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        1 Reply Last reply
        3

        3/3

        6 Jan 2020, 09:36

        • Login

        • Login or register to search.
        3 out of 3
        • First post
          3/3
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved