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.
Forum Updated to NodeBB v4.3 + New Features

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 439 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 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
    0
    • Y Yash001

      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 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 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

        • Login

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