Запрет изменения размера окна во время изменения размера QStatusBar

Если главное окно приложения имеет QStatusBar и если его ширина становится больше (например, при добавлении виджета), чем ширина основного окна, окно автоматически изменяет размер, чтобы соответствовать строке состояния. Интересно, есть ли способ предотвратить изменение размера окна в таких случаях?

Заранее спасибо!

3

Решение

Я нашел выход из этой ситуации. Я добавил QScrollArea в моей строке состояния, и теперь я добавляю свои виджеты в эту область прокрутки, чтобы они не влияли на размер основного окна.

3

Другие решения

Для этого я бы написал немного 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 Вот.

0

У меня была та же проблема, и я смог ее исправить, просто установив фиксированный размер для виджета, который я добавил в строку состояния.

0
По вопросам рекламы [email protected]