zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Qt之QLabel

Qt
2023-09-11 14:19:16 时间

这里写图片描述

首先我们构造一个QLabel对象,其中this为其所在的父窗体。通过调用setText可以为标签设置文本(Hello World),这时标签就可以正常显示出来了。为了显示更佳的效果,我们可以通过调用setStyleSheet来设置样式。color: white-顾名思义,就是为标签设置一个文本色(白色)。


默认的标签文本对齐方式为:左对齐、垂直居中,我们可以通过setAlignment来设置,包括:左、上、右、下、居中对齐,一般情况,我们会进行两两组合(水平方向、垂直方向)。

比如:居中对齐

setAlignment(Qt::AlignCenter);

使用样式表来控制(水平居右、垂直居下):

setStyleSheet("qproperty-alignment: AlignBottom | AlignRight;");

如果文本过长,我们可以采用自动换行的方式来显示。


这里写图片描述

注意:当使用英文的时候,如果写为类似形式”abcdefghijklmnopqrstuvwxyz”则是不能换行的,why?因为中间没有空格,所以需要写为”abcde fghij klmno pqrst uvwxyz”。


一般情况下,自动换行之后文本上下行会距离比较近,我们可以通过下面方式来设置行高。


pLabel- setWordWrap(true);

QString strText = QStringLiteral("一去二三里,烟村四五家。亭台六七座,八九十枝花。");

QString strHeightText = " p "line-height:%1%\" %2 p ";

strText = strHeightText.arg(150).arg(strText);

pLabel- setText(strText);

如果过长,我们又不想换行,只想把其中一部分省略为…,那么我们可以通过QFontMetrics来实现,这里先不介绍QFontMetrics,感兴趣的童鞋可以先自行研究。

这里写图片描述


QString strText = QStringLiteral("一去二三里,烟村四五家。亭台六七座,八九十枝花。");

QString strElidedText = pLabel- fontMetrics().elidedText(strText, Qt::ElideRight, 200, Qt::TextShowMnemonic);

pLabel- setText(strElidedText);

默认情况下,文本显示方式为水平方向,如果我们需要在垂直方向上显示,需要用一些小技巧来处理。

这里写图片描述


QString strText = QStringLiteral("一去二三里,烟村四五家。");

pLabel- setText(strText.split("", QString::SkipEmptyParts).join("\n"));

pLabel- setAlignment(Qt::AlignCenter);

我们可以在助手中查找关于Using HTML Markup in Text Widgets的资料,查看Qt支持哪些HTML标记。

下面我们来写一段HTML代码,O(∩_∩)O哈哈~。。。显示不同颜色的文本以及图片

这里写图片描述


是不是很神奇?经常我们要用好几个控件来组合才能实现的功能,就仅仅几行HTML代码就搞定了。。。何乐而不为!


首先我们构建一个QPixmap来作为显示的图片,然后设置标签的大小,可以通过setScaledContents按比例缩放图片达到理想的效果。

这里写图片描述


这里我们需要使用另外一个类QMovie来控制动画,start()可以进行播放与stop()则可以停止,也可以通过调用setSpeed()来设置动画的播放速度。

这里写图片描述


pLabel- setText(QString(" a href = \"%1\" %2 /a ").arg("http://blog.csdn.net/liang19890820").arg(QStringLiteral("一去丶二三里")));

pLabel- setOpenExternalLinks(true);

pLabel- setText(QString(" a href = \"%1\" %2 /a ").arg("http://blog.csdn.net/liang19890820").arg(QStringLiteral("一去丶二三里")));

connect(pLabel, SIGNAL(linkActivated(QString)), this, SLOT(openUrl(QString)));

void MainWindow::openUrl(const QString link)

 QDesktopServices::openUrl(QUrl(link));

}

通过上面的学习,我们基本将标签的大部分用法都分享了,可以看出HTML、CSS的重要性,所以无论你现在所从事的工作是什么,或者以后做什么,我都建议好好研究下Web,技多不压身。。。上面的内容虽多,但都很简单,也很重要,所以都需要掌握,我们不只是Qter,我们更是工匠-精益求精、严谨、耐心,专注,坚持。


Qt QpushButton 实现长按下功能 最近做项目需要一个按钮具备长时间按下的功能,才发现Qt原始的按钮是没有这个功能,不过Qt的原生按钮是存在按下和释放信号的,有了这两个信号,再来实现按钮长时间被按下,这就简单了,看下动画演示。
QComboBox 的常规使用方法,在这个使用模板里,基本都有了。 熟悉一下代码,直接就可以用了。
滑块是一个用于控制有界值的典型部件。它允许用户沿水平或垂直方向移动滑块,并将滑块所在的位置转换成一个合法范围内的值。