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. Instantely updateing headerData of QItemModel (QTreeView) when changing selection
Forum Updated to NodeBB v4.3 + New Features

Instantely updateing headerData of QItemModel (QTreeView) when changing selection

Scheduled Pinned Locked Moved Unsolved General and Desktop
header dataupdateselectioninstantly
3 Posts 3 Posters 1.3k 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.
  • G Offline
    G Offline
    gde23
    wrote on 9 May 2017, 16:39 last edited by
    #1

    Hello,
    i have a QTreeView with differnt sorts of members in each row and therefore want to change the desctiption in the header according to the current selection.

    What i have come up with is following:

    QVariant TreeModel::headerData(int section, Qt::Orientation orientation, int role) const {
        if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
            QModelIndex index = m_tree_view->currentIndex();
            TreeItem* Item_selected = static_cast<TreeItem*>(index.internalPointer());
            std::string value;
            if(Item_selected != 0) {
                value = Item_selected->getDispName(section);
            } else{
                value = m_root_item->getDispName(section);
            }
            return QVariant(value.c_str());
        }
        return QVariant();
    }
    
    This works fine, however it often tankes some time till the headers get updated, (mouseover helps, but sometimes works without)
    Is there a way to re-draw the header instantainiously?
    
    
    1 Reply Last reply
    0
    • I Offline
      I Offline
      iota142
      wrote on 9 May 2017, 17:30 last edited by iota142 5 Sept 2017, 17:30
      #2

      Hi,

      Do you emit the signal QAbstractItemModel::headerDataChanged() when you change your header datas?

      The documentation says: "When reimplementing the setHeaderData() function, this signal must be emitted explicitly."
      -> documentation of QAbstractItemModel::headerDataChanged.

      1 Reply Last reply
      2
      • V Offline
        V Offline
        VRonin
        wrote on 10 May 2017, 07:05 last edited by VRonin 5 Nov 2017, 07:13
        #3

        https://en.wikipedia.org/wiki/Dependency_inversion_principle

        Basically what you are doing is evil.

        You should connect m_tree_view->selectionModel()'s currentIndexChanged() signal with a slot that calls setHeaderData in the model. that's all

        "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
        1

        2/3

        9 May 2017, 17:30

        • Login

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