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. Setting "ItemisAutoTristate" on a QTreeWidgetItem disable it.
Forum Updated to NodeBB v4.3 + New Features

Setting "ItemisAutoTristate" on a QTreeWidgetItem disable it.

Scheduled Pinned Locked Moved Solved General and Desktop
3 Posts 2 Posters 352 Views 1 Watching
  • 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.
  • M Offline
    M Offline
    Mummoc
    wrote on last edited by Mummoc
    #1

    Hi, i'm currently trying to build a tree using QTreeWidget and QTreeWidgetItem in Qt6.2.1.
    I simply have a MainWindow widget that contains everything, in the constructor i have the following code:

    QTreeWidget* treeA = new QTreeWidget(this);
        QTreeWidgetItem* parentItemA = new QTreeWidgetItem(treeA, QStringList(QString("parent 1")));
        QTreeWidgetItem* childItemA1 = new QTreeWidgetItem(parentItemA, QStringList(QString("child 1")));
        QTreeWidgetItem* childItemA2 = new QTreeWidgetItem(parentItemA, QStringList(QString("child 2")));
        QTreeWidgetItem* childItemA3 = new QTreeWidgetItem(childItemA1, QStringList(QString("child 2")));
    
        parentItemA->setCheckState(0, Qt::Unchecked);
        childItemA1->setCheckState(0, Qt::Unchecked);
        childItemA2->setCheckState(0, Qt::Unchecked);
        childItemA3->setCheckState(0, Qt::Unchecked);
    
        QTreeWidget* treeB = new QTreeWidget(this);
        QTreeWidgetItem* parentItemB = new QTreeWidgetItem(treeB, QStringList(QString("parent 1")));
        QTreeWidgetItem* childItemB1 = new QTreeWidgetItem(parentItemB, QStringList(QString("child 1")));
        QTreeWidgetItem* childItemB2 = new QTreeWidgetItem(parentItemB, QStringList(QString("child 2")));
        QTreeWidgetItem* childItemB3 = new QTreeWidgetItem(childItemB1, QStringList(QString("child 2")));
    
        parentItemB->setFlags(Qt::ItemIsAutoTristate);
        parentItemB->setCheckState(0, Qt::Unchecked);
        childItemB1->setCheckState(0, Qt::Unchecked);
        childItemB2->setCheckState(0, Qt::Unchecked);
        childItemB3->setCheckState(0, Qt::Unchecked);
    
        QHBoxLayout* layout = new QHBoxLayout(this);
        layout->addWidget(treeA);
        layout->addWidget(treeB);
    

    9e7ba9f8-0c92-48d4-9b37-02c76e2f751d-image.png

    As seen in the screenshot, treeB (the one the right) is greyed out.
    Adding the following line seems to solve the issue.

    parentItemB->setDisabled(false);
    

    The only difference between treeA and treeB is that treeB's toplevel item has the ItemIsAutoTriState flag set.

    Is this a know bug ? Or is it a normal behaviour i wasn't aware of ?

    Gojir4G 1 Reply Last reply
    0
    • M Mummoc

      Hi, i'm currently trying to build a tree using QTreeWidget and QTreeWidgetItem in Qt6.2.1.
      I simply have a MainWindow widget that contains everything, in the constructor i have the following code:

      QTreeWidget* treeA = new QTreeWidget(this);
          QTreeWidgetItem* parentItemA = new QTreeWidgetItem(treeA, QStringList(QString("parent 1")));
          QTreeWidgetItem* childItemA1 = new QTreeWidgetItem(parentItemA, QStringList(QString("child 1")));
          QTreeWidgetItem* childItemA2 = new QTreeWidgetItem(parentItemA, QStringList(QString("child 2")));
          QTreeWidgetItem* childItemA3 = new QTreeWidgetItem(childItemA1, QStringList(QString("child 2")));
      
          parentItemA->setCheckState(0, Qt::Unchecked);
          childItemA1->setCheckState(0, Qt::Unchecked);
          childItemA2->setCheckState(0, Qt::Unchecked);
          childItemA3->setCheckState(0, Qt::Unchecked);
      
          QTreeWidget* treeB = new QTreeWidget(this);
          QTreeWidgetItem* parentItemB = new QTreeWidgetItem(treeB, QStringList(QString("parent 1")));
          QTreeWidgetItem* childItemB1 = new QTreeWidgetItem(parentItemB, QStringList(QString("child 1")));
          QTreeWidgetItem* childItemB2 = new QTreeWidgetItem(parentItemB, QStringList(QString("child 2")));
          QTreeWidgetItem* childItemB3 = new QTreeWidgetItem(childItemB1, QStringList(QString("child 2")));
      
          parentItemB->setFlags(Qt::ItemIsAutoTristate);
          parentItemB->setCheckState(0, Qt::Unchecked);
          childItemB1->setCheckState(0, Qt::Unchecked);
          childItemB2->setCheckState(0, Qt::Unchecked);
          childItemB3->setCheckState(0, Qt::Unchecked);
      
          QHBoxLayout* layout = new QHBoxLayout(this);
          layout->addWidget(treeA);
          layout->addWidget(treeB);
      

      9e7ba9f8-0c92-48d4-9b37-02c76e2f751d-image.png

      As seen in the screenshot, treeB (the one the right) is greyed out.
      Adding the following line seems to solve the issue.

      parentItemB->setDisabled(false);
      

      The only difference between treeA and treeB is that treeB's toplevel item has the ItemIsAutoTriState flag set.

      Is this a know bug ? Or is it a normal behaviour i wasn't aware of ?

      Gojir4G Offline
      Gojir4G Offline
      Gojir4
      wrote on last edited by Gojir4
      #2

      @Mummoc Hi,

      By doing this, you are removing all flags previously defined.
      You should try this instead:
      parentItemB->setFlags(parentItemB->flags() | Qt::ItemIsAutoTristate);

      Default flags are, as defined in the docs:
      Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled

      1 Reply Last reply
      4
      • M Offline
        M Offline
        Mummoc
        wrote on last edited by Mummoc
        #3

        That fixed the issue, didn't know setFlags() reset existing flags, i feel dumb now...

        Thank you !!! :)

        1 Reply Last reply
        0

        • Login

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