Как автоматически расширить ширину метки в 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);