[英]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.