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

setvisible() of QWidget has no effect at QTreeWidgetItem

    XMLWordPrintable

    Details

    • Commits:
      04de24c6449422d29a0d4760375aa94f59222fa3, Revert: dd262dc7f5c02ffaaa965815a9ccc8978efdbabf

      Description

      I think there is a bug at QTreeWidgetItem.

      In this sample project I added a QTreeWidget item with a button and text.

      After this I set the following line:

      pbtn->setVisible(false);
      
      

      Here I expected that the button is displayed and only the text below is shown after but it isn't. The button is displayed all the time so the method "setVisible()" has no effect. I attached the sample project.

      mainwindow.h:

      #include <QMainWindow>
      
      #include <QTreeWidget>
      #include <QTreeWidgetItem>
      #include <QPushButton>
      
      
      namespace Ui {
          class MainWindow;
      }
      
      class MainWindow : public QMainWindow {
          Q_OBJECT
      public:
          MainWindow(QWidget *parent = 0);
          ~MainWindow();
      
      protected:
      		void changeEvent(QEvent *e);
      
      private:
          Ui::MainWindow *ui;
      
      	private slots:
      		void click123();
      };
      

      mainwindow.cpp:

      #include "mainwindow.h"
      #include "ui_mainwindow.h"
      
      
      MainWindow::MainWindow(QWidget *parent) :
          QMainWindow(parent),
          ui(new Ui::MainWindow)
      {
          ui->setupUi(this);
      
      		QTreeWidgetItem *widget_item;
      
      		widget_item = new QTreeWidgetItem();
      		widget_item->setText(0, "example text");
      
      		QPushButton *pbtn;
      
      		pbtn = new QPushButton();
      		pbtn->setText("example");
      		pbtn->setVisible(false);
      
      		ui->treeWidget->addTopLevelItem(widget_item);
      
      		ui->treeWidget->setItemWidget(widget_item, 0, pbtn);
      
      }
      
      MainWindow::~MainWindow()
      {
          delete ui;
      }
      
      void MainWindow::changeEvent(QEvent *e)
      {
          QMainWindow::changeEvent(e);
          switch (e->type()) {
          case QEvent::LanguageChange:
              ui->retranslateUi(this);
              break;
          default:
              break;
          }
      }
      
      void MainWindow::click123() {
      
      
      }
      

        Attachments

          Issue Links

          For Gerrit Dashboard: QTBUG-13522
          # Subject Branch Project Status CR V

            Activity

              People

              Assignee:
              qt.team.quick.subscriptions Qt Quick and Widgets Team
              Reporter:
              anno Hans Müller
              Votes:
              2 Vote for this issue
              Watchers:
              8 Start watching this issue

                Dates

                Created:
                Updated: