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. How to decrease the size of cell inside the Qtreeview.
QtWS25 Last Chance

How to decrease the size of cell inside the Qtreeview.

Scheduled Pinned Locked Moved Unsolved General and Desktop
qtreeviewqt5.14.2qstandarditemqmodelindex
3 Posts 2 Posters 413 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.
  • Y Offline
    Y Offline
    Yash001
    wrote on 18 Aug 2023, 19:36 last edited by
    #1

    I am placing widgets inside the Qtreeview using setindexwidget funcation.
    I would like to reduce the space inside the cell where horizontally. (black dotted line box)

    27cbd0c5-bd9b-4467-9696-9e0afbeb01af-image.png

    I have try to setitemDeligate but it does not work.

    any one have idea?

    C 1 Reply Last reply 18 Aug 2023, 19:47
    0
    • Y Yash001
      18 Aug 2023, 19:36

      I am placing widgets inside the Qtreeview using setindexwidget funcation.
      I would like to reduce the space inside the cell where horizontally. (black dotted line box)

      27cbd0c5-bd9b-4467-9696-9e0afbeb01af-image.png

      I have try to setitemDeligate but it does not work.

      any one have idea?

      C Offline
      C Offline
      ChrisW67
      wrote on 18 Aug 2023, 19:47 last edited by
      #2

      Where is the extra space? Inside the table cell but outside your custom widget, or inside your custom widget? How are you controlling the tree/table column widths?

      Please provide at least some idea of what your code looks like.

      1 Reply Last reply
      0
      • Y Offline
        Y Offline
        Yash001
        wrote on 18 Aug 2023, 20:17 last edited by
        #3

        Remove space; Inside the table cell but outside my custom widget

        Here some code snap. @ChrisW67

        #include "ElementsListWidget.h"
        #include "AbstractElement.h"
        #include "ElementDragEventHandler.h"
        #include <QAbstractScrollArea>
        #include <QGridLayout>
        #include <QLabel>
        #include <QPixmap>
        #include <QScrollArea>
        #include <QSortFilterProxyModel>
        #include <QVariant>
        #include <qscrollbar.h>
        #include <qstandarditemmodel.h>
        #include <qtreeview.h>
        
        
        ElementsListWidget::ElementsListWidget(QWidget* parent)
            : QWidget(parent)
        {
            QVBoxLayout* mainlayout = new QVBoxLayout(this);
            mainlayout->setContentsMargins(0, 0, 0, 0);
        
            elementsListLayout = new QTreeView(this);
            elementsListLayout->setContentsMargins(0, 0, 0, 0);
            elementsListLayout->setHeaderHidden(true);
            elementsListLayout->setIndentation(0);
            elementsListLayout->setUniformRowHeights(false);
            elementsListLayout->setObjectName("ElementsListWidget");
            elementsListLayout->setSelectionMode(QAbstractItemView::NoSelection);
        
            elementsListLayout->verticalScrollBar()->parent()->setProperty("background_transparent", true);
            elementsListLayout->horizontalScrollBar()->parent()->setProperty("background_transparent", true);
        
            sourceModel = new QStandardItemModel(this);
            elementsListLayout->setModel(sourceModel);
            
            mainlayout->addWidget(elementsListLayout);
            setLayout(mainlayout);
        
            elementsPerRow = 3;
            totalModelElements = 0;
            sourceModel->setColumnCount(elementsPerRow);
        }
        
        void ElementsListWidget::addElement(AbstractElement* element)
        {
            elementsModel << element;
            showWidgetOnView(createDisplayUnit(element));
        }
        
        QWidget* ElementsListWidget::createDisplayUnit(AbstractElement* element)
        {
        
            if (!element) {
                return nullptr;
            }
                
        
            QWidget* elementDispalyWidget = new QWidget;
            elementDispalyWidget->setObjectName("elementDisplayUnit");
        
            QVBoxLayout* elementdisplayLay = new QVBoxLayout(elementDispalyWidget);
            //elementdisplayLay->setContentsMargins(0, 0, 0, 0);
        
            QLabel* elementIconLabel = new QLabel(elementDispalyWidget);
            elementIconLabel->setObjectName("elementIconLabel");
            elementIconLabel->setProperty("element", QVariant::fromValue(static_cast<AbstractElement*>(element)));
            elementIconLabel->setCursor(Qt::OpenHandCursor);
            elementIconLabel->setAlignment(Qt::AlignCenter);
            elementIconLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
            elementIconLabel->installEventFilter(new ElementDragEventHandler(elementIconLabel)); // Install event filter
            elementIconLabel->setPixmap(element->getImage().scaled(50, 50));
        
            QLabel* elementNameLabel = new QLabel(element->getName(), elementDispalyWidget);
            elementNameLabel->setObjectName("elementNameLabel");
            elementNameLabel->setAlignment(Qt::AlignCenter);
            elementNameLabel->setWordWrap(true);
        
            elementdisplayLay->setAlignment(Qt::AlignHCenter);
            elementdisplayLay->addWidget(elementIconLabel);
            elementdisplayLay->addWidget(elementNameLabel);
            elementdisplayLay->addStretch();
        
            elementDispalyWidget->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
        
            return elementDispalyWidget;
        }
        
        void ElementsListWidget::setElementsPerRow(int numberOfelementsPerRow)
        {
            if (numberOfelementsPerRow > 0) {
                elementsPerRow = numberOfelementsPerRow;
            }
        }
        
        
        
        void ElementsListWidget::serachElement(const QString& searchText)
        {
            clearModel();
        
            // Iterate through the stored widgets in elementWidgetModel
            for (AbstractElement* element : elementsModel) {
                if (element && element->getName().contains(searchText, Qt::CaseInsensitive)) {
                    showWidgetOnView(createDisplayUnit(element));
                }
            }
        
        }
        
        void ElementsListWidget::showWidgetOnView(QWidget* elementDisplayUnit)
        {
            if (elementDisplayUnit == nullptr) {
                return;
            }
        
            QStandardItem* item = new QStandardItem;
            
        
            // Calculate the row and column count for the new element
            int row = totalModelElements / elementsPerRow;
            int column = totalModelElements % elementsPerRow;
        
            sourceModel->setItem(row, column, item);
        
            elementsListLayout->setIndexWidget(item->index(), elementDisplayUnit);
        
            totalModelElements++;
         }
        
        void ElementsListWidget::clearModel() {
            sourceModel->clear();
            totalModelElements = 0;
         }
        

        styel sheet for few widget

        QWidget#ElementsListWidget {
        	background-color: #DAE0E9;
        	color: #3B5571;
        	border: none;
        }
        
        #elementDisplayUnit {
        	background-color: transparent;
        	font-size: 14px;
        }
        #elementIconLabel {
        	width: 64px;
        	background-color: #ffffff;
            border: 1px solid #BEC9CD;
            height: 64px;
            position: relative;
            /* align-items: center; */
            border-radius: 5px;
            /* justify-content: center; */
            background-color: #FFFFFF;
        }
        #elementIconLabel:hover {
            background-color: lightgray;
        }
        #elementNameLabel {
            padding: 0px 0 0 0;
            font-size: 11px;
            max-width: 64px;
            text-align: center;
            line-height: 12px;
            /* text-overflow: ellipsis; */
        	background-color: transparent;
            /* word-wrap: break-word; */
        	font-weight: bold; 
        }
        
        1 Reply Last reply
        0

        3/3

        18 Aug 2023, 20:17

        • Login

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