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

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

XMLWordPrintable

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

      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();
      }

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

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

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes