繁体   English   中英

如何在C ++中使用Qt在QGridLayout中的QLabel下划线?

[英]How to underline a QLabel in a QGridLayout with Qt in C++?

我目前正在使用C ++中的Qt 5.7-5.8,并且试图在QLabel下划线,并在其下面用黑色实线标记。 知道我的QLabel在QGridLayout里面,我已经尝试了这段代码,但是没有显示该行。

mViewerLayout->itemAtPosition(0, 0)->widget()->setStyleSheet("border-bottom: 8px solid black");

我尝试通过其objectName()设置对象名称和设置样式表,我尝试在下面的代码示例的setStyleSheet()函数调用的引号内编写“ QWidget”而不是“ QLabel”,我尝试不使用objectName()。

mViewerLayout->itemAtPosition(0, 0)->widget()->setStyleSheet("QLabel {border-bottom: 8px solid black;}");

如果我将样式表设置为border: 8px solid black ,则它可以工作并覆盖QLabel的所有边界,但是我只想在其下划线,并且border-bottom似乎不起作用,即使我知道这是您指定的方式CSS的底部边框,甚至Qt文档似乎都指定了这种语法。 有人可以纠正我吗?

这样的事情怎么样:

 QLabel * lab = static_cast<QLabel *>(mViewerLayout->itemAtPosition(0, 0)->widget());
 QFont f = lab->font();
 f.setUnderline(true);
 lab->setFont(f);

我认为,仅使用内置的下划线功能会比尝试伪造功能更加简单,并且可以提供更好的结果。

QLabel上的以下样式表应该可以解决问题:

border-bottom-width: 1px;
border-bottom-style: solid;
border-radius: 0px;

也许有更好的方法,但是我看到的是,如果不指定半径,则不会显示该线。

完整代码显示工作原理:

#include <QApplication>
#include <QLabel>
#include <QLayout>

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  QWidget widget;
  QVBoxLayout *l =  new QVBoxLayout(&widget);
  QLabel label;
  label.setText("This text is underlined");
  label.setStyleSheet("border-bottom-width: 1px; border-bottom-style: solid; border-radius: 0px;");
  l->addWidget(&label);
  l->addWidget(new QWidget());
  widget.show();
  return a.exec();
}

结果是:

在此处输入图片说明

您是否在应用程序上设置了与标签上设置的样式冲突的其他样式表?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM