3

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

提前致谢!

4

3 回答 3

3

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

于 2014-03-10T19:38:23.940 回答
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此处

于 2014-03-08T19:45:19.880 回答
0

我有同样的问题,并且能够通过简单地为我添加到状态栏的小部件设置一个固定大小来解决它

于 2018-05-07T07:54:35.277 回答