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. Set icon to QTreeWidgetItem causes crash
Forum Update on Monday, May 27th 2025

Set icon to QTreeWidgetItem causes crash

Scheduled Pinned Locked Moved General and Desktop
qtreewidgetitemcrashicon
12 Posts 4 Posters 5.8k 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.
  • S Offline
    S Offline
    SGaist
    Lifetime Qt Champion
    wrote on 30 Aug 2015, 16:04 last edited by
    #2

    Hi,

    Did you allocate treeItem before using it ?

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    M 1 Reply Last reply 30 Aug 2015, 16:10
    0
    • S SGaist
      30 Aug 2015, 16:04

      Hi,

      Did you allocate treeItem before using it ?

      M Offline
      M Offline
      MohammadReza
      wrote on 30 Aug 2015, 16:10 last edited by MohammadReza
      #3

      @SGaist Yes. Here is the code:
      treeItem = new QTreeWidgetItem(ui->treeWidget);
      (Create new instance in a loop)

      1 Reply Last reply
      0
      • A Offline
        A Offline
        alex_malyu
        wrote on 30 Aug 2015, 20:15 last edited by
        #4

        Did you try to take any QTreeWidget example (or write your own which create QTreeWidget, adds one item) and add the code which sets icon to a single item?
        Can you post it?

        1 Reply Last reply
        0
        • M MohammadReza
          30 Aug 2015, 12:40

          Hi to all,
          I get icon of a file by this code:

          QFileInfo info(path);
          QFileIconProvider ip;
          QIcon icon=ip.icon(info);
          

          But when I set this icon to a column of a QTreeWidgetItem, it causes crash. Here is the code:
          treeItem->setIcon(0,icon);
          Thanks.

          R Offline
          R Offline
          raf924
          wrote on 30 Aug 2015, 20:31 last edited by
          #5

          @MohammadReza I don't know if it'll help but why don't you just write

          treeItem->setIcon(0,QIcon(path));
          

          Also what's the crash error?

          1 Reply Last reply
          0
          • S Offline
            S Offline
            SGaist
            Lifetime Qt Champion
            wrote on 30 Aug 2015, 20:38 last edited by
            #6

            Additionally, can you share the complete code snippet where you create and setup these items ?

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            0
            • M Offline
              M Offline
              MohammadReza
              wrote on 31 Aug 2015, 02:18 last edited by
              #7

              Here is the code:

                  QDir dir;
                  QFileInfoList qFIList = dir.drives();
              
                  QTreeWidgetItem *treeItem;
              
                  for(int i=0; i < qFIList.size(); i++)
                  {
                      treeItem = new QTreeWidgetItem(ui->treeWidget);
                      treeItem->setText(0, qFIList.at(i).absolutePath());
              
                      QFileInfo info(qFIList.at(i).absolutePath());
                      QFileIconProvider ip;
                      QIcon icon=ip.icon(info);
                      treeItem->setIcon(0,icon);
              
                      treeItem->setText(1, "description");
                  }
              

              This codes causes "has stopped working" crash but when I comment treeItem->setIcon(0,icon);
              everything works correctly.

              R 1 Reply Last reply 31 Aug 2015, 14:17
              0
              • M MohammadReza
                31 Aug 2015, 02:18

                Here is the code:

                    QDir dir;
                    QFileInfoList qFIList = dir.drives();
                
                    QTreeWidgetItem *treeItem;
                
                    for(int i=0; i < qFIList.size(); i++)
                    {
                        treeItem = new QTreeWidgetItem(ui->treeWidget);
                        treeItem->setText(0, qFIList.at(i).absolutePath());
                
                        QFileInfo info(qFIList.at(i).absolutePath());
                        QFileIconProvider ip;
                        QIcon icon=ip.icon(info);
                        treeItem->setIcon(0,icon);
                
                        treeItem->setText(1, "description");
                    }
                

                This codes causes "has stopped working" crash but when I comment treeItem->setIcon(0,icon);
                everything works correctly.

                R Offline
                R Offline
                raf924
                wrote on 31 Aug 2015, 14:17 last edited by raf924
                #8

                @MohammadReza

                QFileInfoList qFIList = dir.drives();
                

                that is your problem. what you want to do is

                QDir dir("/path/to/folder");
                QFileInfoList qFIList = dir.entryInfoList(QStringList()<<"*.jpg"<<"*.png",QDir::Files);
                
                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  MohammadReza
                  wrote on 1 Sept 2015, 03:27 last edited by
                  #9

                  I filter directories and drives and remove them but the problem still exist for files.

                  When I use my code, most of the time icons of drive and files appear but after some second the stop working window error occurs:

                  Problem signature:
                  
                  
                  Problem Event Name: APPCRASH
                    Application Name: test-QTree.exe
                    Application Version:  0.0.0.0
                    Application Timestamp:    55e3f36b
                    Fault Module Name:    Qt5Widgetsd.dll
                    Fault Module Version: 5.5.0.0
                    Fault Module Timestamp:   559122fa
                    Exception Code:   c0000005
                    Exception Offset: 0000000000589022
                    OS Version:   6.1.7601.2.1.0.256.1
                    Locale ID:    1033
                    Additional Information 1: d87f
                    Additional Information 2: d87fc971aeb59f6c7e25e02ab99a0244
                    Additional Information 3: 1b94
                    Additional Information 4: 1b94c7629fda85c2d6bb0c6eacbea27e
                  
                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 1 Sept 2015, 21:53 last edited by
                    #10

                    What do you get if you run that through the debugger ?

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    M 1 Reply Last reply 5 Sept 2015, 06:42
                    0
                    • S SGaist
                      1 Sept 2015, 21:53

                      What do you get if you run that through the debugger ?

                      M Offline
                      M Offline
                      MohammadReza
                      wrote on 5 Sept 2015, 06:42 last edited by
                      #11

                      @SGaist
                      There is no problem in debugging. I found an interesting thing:
                      I use this code to set an icon for a drive

                          QTreeWidgetItem *twi = ui->treeWidget->currentItem();
                          QString path = twi->text(0); //for example path is  L:/
                      
                          QFileInfo info(path);
                          QFileIconProvider ip;
                          QIcon icon=ip.icon(info);
                          twi->setIcon(0,icon);
                      

                      Everything is ok and the icon has been set and no crash anymore. But When the mouse cursor go around this item (twi) in QTreeList, the "has stopped working" error occurs.

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on 5 Sept 2015, 20:48 last edited by
                        #12

                        What is the stack trace when this happens ?

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        0

                        11/12

                        5 Sept 2015, 06:42

                        • Login

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