Qt之QLabel

简述

QLabel提供了一个文本或图像的显示,没有提供用户交互功能。

一个QLabel能够包括以下随意内容类型:

内容 设置
纯文本 使用setText()设置一个QString
富文本 使用setText()设置一个富文本的QString
图像 使用setPixmap()设置一个图像
动画 使用setMovie()设置一个动画
数字 使用setNum()设置int或double,并转换为纯文本。
Nothing 空的纯文本,默认的。使用clear()设置
  • 简述
  • 纯文本
    • 显示
    • 对齐方式
    • 自己主动换行
    • 设置行高
    • 省略
    • 垂直显示
  • 富文本
  • 图像
  • 动画
  • 数字
  • 超链接
    • 方法一
    • 方法二
  • 总结

纯文本

显示

首先我们构造一个QLabel对象,当中this为其所在的父窗口。通过调用setText能够为标签设置文本(Hello World),这时标签就能够正常显示出来了。

为了显示更佳的效果。我们能够通过调用setStyleSheet来设置样式。

color: white-顾名思义,就是为标签设置一个文本色(白色)。

QLabel *pLabel = new QLabel(this);
pLabel->setText("Hello World");
pLabel->setStyleSheet("color: white");

对齐方式

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

比方:居中对齐

setAlignment(Qt::AlignCenter);

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

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

自己主动换行

假设文本过长,我们能够採用自己主动换行的方式来显示。

setWordWrap(true);

注意:当使用英文的时候,假设写为相似形式”abcdefghijklmnopqrstuvwxyz”则是不能换行的。why?由于中间没有空格。所以须要写为”abcde fghij klmno pqrst uvwxyz”。

设置行高

普通情况下。自己主动换行之后文本上下行会距离比較近。我们能够通过以下方式来设置行高。

pLabel->setWordWrap(true);
QString strText = QStringLiteral("一去二三里。烟村四五家。

亭台六七座,八九十枝花。");
QString strHeightText = "<p style=\"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哈哈~。。。显示不同颜色的文本以及图片

QString strHTML = QString("<html>                            <head>                            <style>                            font{color:white;} #f{font-size:18px; color: green;}                            </style>                            </head>                            <body>                           <font>%1</font><font id=\"f\">%2</font>                            <br/><br/>                            <img src=\":/Images/logo\" width=\"100\" height=\"100\">                            </body>                            </html>").arg("I am a ").arg("Qter");
pLabel->setText(strHTML);
pLabel->setAlignment(Qt::AlignCenter);

是不是非常奇妙?常常我们要用好几个控件来组合才干实现的功能,就仅仅几行HTML代码就搞定了。。

何乐而不为。

图像

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

QPixmap pixmap(":/Images/logo");
pLabel->setPixmap(pixmap);
pLabel->setFixedSize(100, 100);
pLabel->setScaledContents(true);

动画

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

QMovie *pMovie = new QMovie(":/Images/movie");
pLabel->setMovie(pMovie);
pLabel->setFixedSize(135, 200);
pLabel->setScaledContents(true);
pMovie->start();

数字

假设我们须要显示一个数字,则能够调用setNum(),他能够将内容转换为纯文本。

pLabel->setNum(66.6);

非常easy就一段代码。我们能够打开源代码瞅瞅,到底setNum是怎样实现的。

void QLabel::setNum(int num)
{
    QString str;
    str.setNum(num);
    setText(str);
}

就三行代码,呵呵哒。。

。超简单吧,我们要有一颗随时看源代码的心!

超链接

我们须要简单使用标签<a></a>写一段简单的HTML超链接代码

方法一

比較简单,直接调用setOpenExternalLinks(true)就可以。

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

方法二

声明一个槽openUrl,将其与linkActivated信号关联。

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,技多不压身。。

。上面的内容虽多,但都非常easy,也非常重要。所以都须要掌握,我们不仅仅是Qter。我们更是工匠-精益求精、严谨、耐心。专注,坚持。

原文地址:https://www.cnblogs.com/zhchoutai/p/8452655.html

时间: 2024-10-09 18:54:36

Qt之QLabel的相关文章

QT 让QLabel自适应text的大

在实现了newform的2个页面的功能以后,为了完善产品的人性化,我在第2个页面上增加了一个显示前面已经选择的路径和模板名称的功能.但是这里就遇到了一个问题,如果万一用户选择的路径和名称都太长了,那么下面在显示的时候就会截断,这就很不爽了. 别看这个小问题,这就涉及了2个技巧. 1. 让QLabel自适应text的大小,直接用下面的代码: LabelName->adjustSize(); 2. 让QLabel能够自动判断并换行显示: LabelName->setGeometry(QRect(3

新手:Qt之QLabel类的应用

在Qt中,我们不可避免的会用到QLabel类.而Qlabel的强大功能作为程序员的你有多少了解? 下面,跟着我一起在来学习一下吧! 1.添加文本 Qlabel类添加文本有两种方式,一种是直接在实现时添加,如: 1 QLabel *label = new QLabel(QString("Holle,世界"), this); 2 //QLabel *label = new QLabel(tr("Holle,世界"), this); 一种是在实现后添加,如: 1 int

【Qt】QLabel实现的圆形图像

本篇只描述圆形图像的两种实现方式,动态阴影边框如下: 目前实现的效果如下: 左右两边实现的方式不同: 右边比较简单 min-width: 100px; max-width: 100px; min-height: 100px; max-height: 100px; border-radius: 50px; border-width: 0 0 0 0; border-image: url(H:/Qt Project/UIDesignTest/Heben.jpg) 0 0 0 0 stretch st

【Qt】QLabel之动态阴影边框

效果如下: 实现思路参考了下面的文章: Qt 之 QPropertyAnimation 该文章是自定义属性alpha,原理类似,代码如下: //在头文件加入 Q_PROPERTY(int iBorderRadius READ iBorderRadius WRITE setBorderRadius) //自定义属性修改QLable的边框,以达到动画效果 private: int iBorderRadius() const; void setBorderRadius(const int radius

QT为QLabel添加Click事件

其实就是改写了一个函数:mouseReleaseEvent,当在QLabel放开鼠标的时,就发射点击信号. [cpp] view plaincopy #ifndef CLICKEDLABEL_H_ #define CLICKEDLABEL_H_ #include <QLabel> #include <QWidget> class ClickedLabel : public QLabel { Q_OBJECT signals: void Clicked(ClickedLabel* c

Qt(QLabel)实现滚动字幕

滚动字幕,也叫跑马,就是动态显示一行字符.前面实现是使用QTimer控制,直接在槽函数中截取字符串进行显示,只控制字符串在控件的一端显示,超出控件的部分并没有从控件的另一端循环显示出来.于是我重新实现了一种方法,或者说完善了前面的不足吧. 使用QTimer控制显示的节奏,在paintEvent中进行截取显示.从左端被截掉的部分会从右端显示出来. 难点在于,我们需要依据控件的宽度,控制字符串的显示位置.所以我们还需要知道每个字符的宽度.QWidget提供了方法可以计算字符的宽度,QFontMetr

第一章 Qt入门

现在自己开始学习Qt了,参考资料是C++ GUI Qt4编程 准备做一系列的学习笔记,也算帮助自己学习吧,希望自己能坚持下去. 1.先来一段程序代码,当然是鼎鼎大名的Hello Qt 1 #include <QApplication> 2 #include <QLabel> 3 4 int main(int argc, char** argv) 5 { 6 QApplication app(argc, argv); 7 //QLabel *label = new QLabel(&q

QT内label控件通过opencv显示图像

1.对pro进行配置,使其能够理解opencv. INCLUDEPATH+=d:\opencv249\include\opencv d:\opencv249\include\opencv2 d:\opencv249\include LIBS+=d:\opencv249\lib\libopencv_calib3d249.dll.a d:\opencv249\lib\libopencv_contrib249.dll.a d:\opencv249\lib\libopencv_core249.dll.a

Qt on Android:怎样适应不同的屏幕尺寸

使用 Qt 开发的 Android 应用,怎样适应 Android 智能手机各种各样的屏幕尺寸? 说到屏幕尺寸,从 2.8 吋到 8.9 吋的手机屏幕都有,这对程序猿们来讲痛苦可不只一点. Android 项目本身已经考虑了这个问题,资源文件,比如图标,都有 ldpi / mdpi / hdpi / xhdpi 等等版本, Android 框架会根据屏幕大小自动选择相应的图标,这样在不同尺寸的屏幕上,应用看起来就差不多了. 那 Qt 应用呢?其实不大用得上 Android 的这种机制(惟有 Ap