首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QLabel,删除边框和背景

QLabel,删除边框和背景
EN

Stack Overflow用户
提问于 2019-05-27 21:25:11
回答 1查看 1.3K关注 0票数 1

我有几个实例的QLabel,我希望这些渲染没有边框或背景颜色。我尝试了以下几种方法:

代码语言:javascript
复制
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();

我还尝试将样式表参数更改为:

代码语言:javascript
复制
plbl->setStyleSheet("QLabel {border: 0px; background-color:rgba(0,0,0,0%);}");

和:

代码语言:javascript
复制
plbl->setFrameStyle(QFrame::NoFrame);

这些都不起作用。我使用的是Qt Creator 3.5.1,基于Qt 5.5.1 (GCC 5.2.1 20151129,32位)

我没有选择Qt版本,它是ACR890手机软件开发工具包的一部分。

编辑要修复对齐,请使用Qt特定的CSS赋值:

代码语言:javascript
复制
     qproperty-alignment: 'AlignVCenter | AlignCenter';

引号和更重要的是管道很重要。

移除边框是通过给QLabel构造函数一个父级来解决的,它不是一个可见的CSS边框,每个标签都被渲染为一个没有父级的窗口。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-27 22:02:24

如果您希望QLabel本身是一个窗口,则需要移除窗口框架并设置正确的属性,以避免窗口管理器绘制背景。

例如:

代码语言:javascript
复制
    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();

标签将在屏幕上显示为文本。

如果要在另一个小部件中插入标签,则必须设置其父标签:

代码语言:javascript
复制
QLabel* plbl = new QLabel("foobar", parent);
// plbl->show(); // Useless. Done by the parent

标签将在parent中显示,没有背景或框架(默认情况下)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56327000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档