У меня есть несколько экземпляров QLabel
, и я хочу, чтобы они отображались без рамки или цвета фона. Я пробовал следующее:
plbl = new QLabel();
plbl->setGeometry(210, 0, 26, 16);
plbl->setAlignment(Qt::AlignRight);
plbl->setAlignment(Qt::AlignVCenter);
plbl->setStyleSheet("border: 0px; background-color:rgba(0,0,0,0%);");
plbl->show();
Я также попытался изменить параметр таблицы стилей на:
plbl->setStyleSheet("QLabel {border: 0px; background-color:rgba(0,0,0,0%);}");
а также:
plbl->setFrameStyle(QFrame::NoFrame);
Ни один из них не работает. Я использую Qt Creator 3.5.1, основанный на Qt 5.5.1 (GCC 5.2.1 20151129, 32 бита)
У меня нет выбора в версии Qt, это часть SDK для телефона ACR890.
[Изменить] Чтобы исправить выравнивание, используйте специфичное для Qt назначение CSS:
qproperty-alignment: 'AlignVCenter | AlignCenter';
Кавычки и, что более важно, труба важны.
Удаление границ было решено путем предоставления конструктору QLabel родителя, это была не видимая граница CSS, каждая метка отображалась как окно без родителя.
@НикосС. Я хочу, чтобы метки отображались без рамки, границы или фона, чтобы они отображались как текст на любом фоне, к которому они добавлены.
На любой платформе, которую я использовал, QLabel
ведет себя именно так, как вам нужно по умолчанию. Вы уверены, что рамка/рамка связаны с самим QLabel
, а не с виджетом/макетом?
Это может быть связано с тем, что QLabel создаются только с помощью new QLabel() и не связаны ни с каким макетом.
Если вы хотите, чтобы ваш QLabel
был окном, вам нужно удалить оконную рамку и установить правильные атрибуты, чтобы менеджер окон не рисовал фон.
Например:
QLabel* plbl = new QLabel("foobar");
plbl->setGeometry(210, 0, 26, 16);
plbl->setAlignment(Qt::AlignRight);
plbl->setAlignment(Qt::AlignVCenter);
plbl->setWindowFlag(Qt::FramelessWindowHint); // No frame
plbl->setAttribute(Qt::WA_NoSystemBackground); // No background
plbl->setAttribute(Qt::WA_TranslucentBackground);
plbl->show();
Метка появится на экране в виде простого текста.
Если вы хотите вставить свою метку в другой виджет, вы должны установить его родителя:
QLabel* plbl = new QLabel("foobar", parent);
// plbl->show(); // Useless. Done by the parent
Метка будет отображаться в parent
без фона и рамки (по умолчанию).
Вы имеете в виду видимую границу (например, рамку, нарисованную вокруг нее) или просто поля? QLabel не имеет границы. Кроме того, когда вы говорите «удалить цвет фона», что именно вы имеете в виду?