在QStatusBar调整大小期间阻止窗口调整大小

时间:2014-03-08 18:10:20

标签: c++ qt resize qstatusbar

如果应用程序的主窗口具有QStatusBar并且如果它的宽度变大(例如在添加小部件期间)而不是主窗口的宽度,则窗口会自动调整大小以适合状态栏。我想知道在这种情况下是否有办法防止窗口尺寸的变化?

提前致谢!

3 个答案:

答案 0 :(得分:3)

我找到了解决这种情况的方法。我在状态栏中添加了QScrollArea,现在我将我的小部件添加到该滚动区域,因此它们不会影响主窗口的大小。

答案 1 :(得分:0)

要做到这一点,我会像这样编写一个RAII调整大小的阻止程序:

class ResizeBlocker
{ 
public:
    ResizeBlocker(QWidget *widget)
        : m_widget(widget)
    {
        m_widget->setFixedSize(m_widget->size());
    }

    ~ResizeBlocker()
    {
        m_widget->setFixedSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));
    }

private:
    QWidget *m_widget;
};

可以使用以下内容:

void MainWindow::addToStatusBar()
{
    ResizeBlocker doNotResizeHere(this);
    ui->statusBar->addWidget(new QLabel("A Label"));
}

我已经创建了这个演示并将其上传到GitHub here

答案 2 :(得分:0)

我遇到了同样的问题,只需为我添加到状态栏的小部件设置固定大小就可以修复它