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.

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