Установить ширину Qlabel

Я пытаюсь сделать соотношение между двумя номерами (симпатиями и антипатиями).

В результате получается число в процентах. Затем я хочу сделать ширину с метки равной проценту.

Итак, если есть 100 симпатий и 1 неприязнь. Я хочу, чтобы не понравилась метка на 1% ширины аналогичного бара. Таким образом, в основном, как система оценки youtube.

Пример изображения: enter image description here

Но я не вижу никакой функции, чтобы установить ширину метки. Итак, как мне это сделать, у кого есть предложения?

Ответ 1

QLabel::setFixedWidth(int). Хотя для того, чтобы сделать его более гибким (не нужно беспокоиться о смене макетов), я бы подклассифицировал QWidget, добавил слоты для двух чисел и переопределял paintEvent(..), чтобы нарисовать два раздела.

Ответ 2

Hm, я просто использую метод resize(). Например, мой виджет, реализованный из QLabel:

BenchItem *itm=static_cast<BenchItem*>(widget);  itm->resize(this->width(),itm->height());

Мне не нужна высота изменения, поэтому он использует высоту, но ширина должна меняться из-за родителей width().

Ответ 3

Я использовал метод setGeometry() для динамической установки ширины QLabel. У меня есть qlabel в форме Ui.

ui->qlabel->setGeometry(x, y, width, height);

Ответ 4

В документации QT этот элемент может содержать только

"Обычный текст, Rich Text, Растровая карта, фильм, число или ничего"

где наиболее перспективные из них, "pixmap", похоже, не имеют функциональности манипуляции с изображениями, в которой вы нуждаетесь, вместо этого больше должны отображаться изображения:

http://qt-project.org/doc/qt-4.8/qpixmap.html

Вместо этого я бы предложил искать более легкие решения для вашей проблемы с гистограммой, например CSS. Вот как это сделать, используя два элемента div:

http://www.1080degrees.net/archive/journal/simple_css_bar_graph/

Если вы предпочитаете показывать изображение в конце концов и иметь библиотеки GD, возможно, посмотрите здесь:

http://php.net/manual/en/function.imagecreate.php