如果应用程序的主窗口有一个QStatusBar,并且其宽度变得比主窗口的宽度更大(例如在添加小部件时),则窗口会自动调整大小以适应状态栏。我想知道是否有办法防止在这种情况下窗口的大小改变?
谢谢!
谢谢!
QScrollArea
,现在我将我的部件添加到该滚动区域中,这样它们就不会影响主窗口的大小。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 这里。
我曾经遇到过同样的问题,通过为我添加到状态栏的小部件设置固定大小,我成功地解决了这个问题。
addWidget()
函数之前,我创建了一个ResizeBlocker
类对象。 - nabroyan