Как автоматически расширить ширину метки в QStatusBar

У меня есть QStatusBar. Я добавил ярлык, показывающий значок там. Теперь я хочу эмулировать поведение QStatusBar::showMessage(), устанавливая текст в другой метке, которую я добавил в качестве виджета в строку состояния. Мне это нужно, потому что я не могу установить заполнение стандартного сообщения в строке состояния. В противном случае значок и текст перекрываются. Теперь я хочу, чтобы QLabel, содержащий текст сообщения, расширился до полной ширины строки состояния. Как я могу это сделать?

Благодарю.

1 ответ

Решение

Вот что вы можете попробовать, я никогда не пробовал в строке состояния, поэтому я не знаю, работает ли она или нет, но я пробовал другие контейнеры и отлично работает. Создайте HBoxLayout, разместите строку состояния, используя ее, добавьте к ней значок и метку, и установите layoutStretch на 0, 1 (addStretch(0); addStretch(1)), 0 для значка, означающего, что он будет растягиваться, чтобы соответствовать значок, и 1 он растянется на все оставшееся пространство, в результате чего метка расширится до полной ширины

Код будет выглядеть примерно так:

QHBoxLayout *layout = new QHBoxLayout(statusBar);
layout->setContentsMargins(11, 11, 11, 11);
statusBar->setLayout(layout);
layout->addStretch(0);
layout->addWidget(iconlabel);
layout->addStretch(1);
layout->addWidget(textlabel);

Извините, если есть ошибки компиляции, не можете попробовать это сейчас. Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: Несмотря на то, что верхний код не работает, я не буду его удалять, потому что это правильный путь для других контейнеров. Для строки состояния это должно работать:

statusBar->addWidget(iconLabel, 0);
statusBar->addWidget(textLabel, 1);
Другие вопросы по тегам