2016-12-21 10 views
1

Я пытаюсь удалить две кнопки инструментов и добавить другие виджеты и добавить hboxlayout с использованием четного фильтра, если окно отображается или скрыто. Проблема заключается в том, что я удаляю проставку горизонтальной, две кнопки связаны успешно, но когда я добавляю виджет, между кнопкой инструмента и виджетами есть пробел, как показано на рисунке. как бы удалить это пространство?пространство между двумя кнопками инструментов и hboxlayout

здесь инициализация

setWindowTitle(tr("Points of Interest")); 
    m_splitter->setContentsMargins(0, 0, 0, 3); 
    m_gridLayout = new QGridLayout(this); 

    m_gridLayout->addWidget(m_splitter, 0, 0, 1, 1); 
    m_hBoxLayout = new QHBoxLayout(this); 
    m_gridLayout->addLayout(m_hBoxLayout, 1, 0, 1, 1); 
    m_hBoxLayout->addWidget(m_myPoiButton); 
    m_hBoxLayout->addStretch(); 
    m_hBoxLayout->addWidget(m_myPoiFilterButton); 
    m_gridLayout->setVerticalSpacing(0); 

здесь код и изображение:

enter image description here

if (event->type() == QEvent::Show) 
    { 
     if (obj == m_poiItemWidget) 
     { 
      bool visibleName = false, visibleHeight = false, visibleRange = false; 
      visibleName = m_namePoiFilter.isVisible(); 
      visibleHeight = m_widgetHeight.isVisible(); 
      visibleRange = m_widgetRange.isVisible(); 




      m_namePoiFilter.setVisible(visibleName); 
      m_widgetHeight.setVisible(visibleHeight); 
      m_widgetRange.setVisible(visibleRange); 

      m_hBoxLayout->addWidget(m_myPoiButton); 
      for (int i = 0; i < m_hBoxLayout->count(); ++i) 
      { 
       QSpacerItem *spacer = m_hBoxLayout->itemAt(i)->spacerItem(); 
       if (spacer) 
       { 
        delete m_hBoxLayout->takeAt(i); 
        break; 
       } 
      } 
      m_hBoxLayout->addWidget(m_myPoiFilterButton); 
      m_hBoxLayout->addStretch(); 
      m_hBoxLayout->addWidget(&m_namePoiFilter); 
      m_hBoxLayout->addWidget(&m_widgetHeight); 
      m_hBoxLayout->addWidget(&m_widgetRange); 


     } 
    } 

    if (event->type() == QEvent::Hide) 
    { 
     if (obj == m_poiItemWidget) 
     { 
      bool visibleName = false, visibleHeight = false, visibleRange = false; 
      visibleName = m_namePoiFilter.isVisible(); 
      visibleHeight = m_widgetHeight.isVisible(); 
      visibleRange = m_widgetRange.isVisible(); 



      m_namePoiFilter.setVisible(visibleName); 
      m_widgetHeight.setVisible(visibleHeight); 
      m_widgetRange.setVisible(visibleRange); 
      for (int i = 0; i < m_hBoxLayout->count(); ++i) 
      { 
       QSpacerItem *spacer = m_hBoxLayout->itemAt(i)->spacerItem(); 
       if (spacer) 
       { 
        delete m_hBoxLayout->takeAt(i); 
        break; 
       } 
      } 
      m_hBoxLayout->addWidget(m_myPoiButton); 
      m_hBoxLayout->addStretch(); 
      m_hBoxLayout->addWidget(m_myPoiFilterButton); 
      m_hBoxLayout->addWidget(&m_namePoiFilter); 
      m_hBoxLayout->addWidget(&m_widgetHeight); 
      m_hBoxLayout->addWidget(&m_widgetRange); 

     } 

    } 

ответ

0

Попробуйте при инициализации

m_gridLayout->setContentsMargins(0,0,0,0); 
m_hBoxLayout->setContentsMargins(0,0,0,0); 
+0

Unfortuantely, это Didn» решить oblem. Между QToolbutton еще есть пробел – andre