Если главное окно приложения имеет QStatusBar
и если его ширина становится больше (например, при добавлении виджета), чем ширина основного окна, окно автоматически изменяет размер, чтобы соответствовать строке состояния. Интересно, есть ли способ предотвратить изменение размера окна в таких случаях?
Заранее спасибо!
Я нашел выход из этой ситуации. Я добавил QScrollArea
в моей строке состояния, и теперь я добавляю свои виджеты в эту область прокрутки, чтобы они не влияли на размер основного окна.
Для этого я бы написал немного 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 Вот.
У меня была та же проблема, и я смог ее исправить, просто установив фиксированный размер для виджета, который я добавил в строку состояния.