Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-2963

QTreeWidgetItem repainting problem : deselection leaves parent items partially checked untill moused over.

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 4.7.1
    • None
    • Widgets: Itemviews
    • None
    • 0baa15e68c7b2e009c1f81f81148939725c216c8

    Description

      This can be reproduced using the following test code.
      First check "Glen Waverley", "Richmond" and
      "Mentone", then unchecked "Melb". This issue has been reproduced on various versions of Windows.

      #include <QtGui>

      class MyWidget: public QWidget
      {
      public:
      MyWidget(QWidget *parent = 0);

      private:
      QHBoxLayout *layout;
      QTreeWidget *tw;
      };

      MyWidget::MyWidget(QWidget *parent)
      {
      setWindowTitle("Support Tester");
      layout = new QHBoxLayout;
      tw = new QTreeWidget();

      QTreeWidgetItem *country = new QTreeWidgetItem(tw);

      Qt::ItemFlags myFlags = country->flags();
      myFlags |= Qt::ItemIsTristate | Qt::ItemIsUserCheckable;

      country->setFlags(myFlags);
      country->setCheckState(1,Qt::Unchecked);
      country->setText(0, tr("Countries"));

      QTreeWidgetItem *cities = new QTreeWidgetItem(country);
      cities->setFlags(myFlags);
      cities->setCheckState(0,Qt::Unchecked);
      cities->setText(0, tr("Cities"));

      // QTreeWidgetItem *forests = new QTreeWidgetItem(country);
      // forests->setFlags(myFlags);
      // forests->setCheckState(0,Qt::Unchecked);
      // forests->setText(0, tr("Forests"));

      QTreeWidgetItem *melbItem = new QTreeWidgetItem(cities);
      melbItem->setFlags(myFlags);
      melbItem->setText(0, tr("Melb"));
      melbItem->setText(1, tr("Yes"));
      melbItem->setCheckState(0,Qt::Unchecked);

      QTreeWidgetItem *glenItem = new QTreeWidgetItem(melbItem);
      glenItem->setFlags(myFlags);
      glenItem->setText(0, tr("Glen Waverley"));
      glenItem->setText(1, tr("Yes"));
      glenItem->setCheckState(0,Qt::Unchecked);

      QTreeWidgetItem *richItem = new QTreeWidgetItem(melbItem);
      richItem->setFlags(myFlags);
      richItem->setText(0, tr("Richmond"));
      richItem->setText(1, tr("Yes"));
      richItem->setCheckState(0,Qt::Unchecked);

      QTreeWidgetItem *mentItem = new QTreeWidgetItem(melbItem);
      mentItem->setFlags(myFlags);
      mentItem->setText(0, tr("Mentone"));
      mentItem->setText(1, tr("Yes"));
      mentItem->setCheckState(0,Qt::Unchecked);

      QTreeWidgetItem *osloItem = new QTreeWidgetItem(cities);
      osloItem->setFlags(myFlags);
      osloItem->setText(0, tr("Oslo"));
      osloItem->setText(1, tr("Yes"));
      osloItem->setCheckState(0,Qt::Unchecked);

      QTreeWidgetItem *bonnItem = new QTreeWidgetItem(cities);
      bonnItem->setFlags(myFlags);
      bonnItem->setText(0, tr("Bonn"));
      bonnItem->setText(1, tr("Yes"));
      bonnItem->setCheckState(0,Qt::Unchecked);

      tw->addTopLevelItem(cities);

      layout->addWidget(tw);
      setLayout(layout);
      }

      int main(int argc, char *argv[])
      {
      QApplication app(argc, argv);
      MyWidget *myWin = new MyWidget();
      myWin->show();
      return app.exec();
      }

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            goffart Olivier Goffart (closed Nokia identity) (Inactive)
            dettman Dean Dettman (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes