如果应用程序的主窗口具有QStatusBar
并且如果它的宽度变大(例如在添加小部件期间)而不是主窗口的宽度,则窗口会自动调整大小以适合状态栏。我想知道在这种情况下是否有办法防止窗口尺寸的变化?
提前致谢!
答案 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)
我遇到了同样的问题,只需为我添加到状态栏的小部件设置固定大小就可以修复它