c++ - 两个工具按钮和 hboxlayout 之间的空间

标签 c++ qt qt4

我正在尝试删除两个工具按钮并添加其他小部件,并在显示或隐藏窗口时使用偶数过滤器添加 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);

        }

    }

最佳答案

在初始化中试试这个

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

关于c++ - 两个工具按钮和 hboxlayout 之间的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41261263/

相关文章:

c++ - 在 Qt widget/QWindow 上显示过剩窗口

qt - 在 Qt4 中创建一个随机字符串或数字

c++ - 如何制作一个 QheaderView 多级?

c++ - 将指向成员函数的指针作为指向函数的指针传递

c++ - std::containers 的日志分配器?

qt - 当操作系统关闭抗锯齿时,如何绘制 QFont 抗锯齿?

c++ - Qt 无法将目标移动到线程

c++ - 如何在注销时优雅地退出 QApplication?

c++ - checkCudaErrors没有打印错误信息

c++ - 不同类型的运算符