QT笔记——QLabel设置自动换行

这篇具有很好参考价值的文章主要介绍了QT笔记——QLabel设置自动换行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在网上看了很多的例子,然后很多都去试发现很多的问题,要不就是不成功,要不就是对自己没用,然后就慢慢解决

1.QLabel 自带的 换行功能

//设置自动换行
ui.label->setWordWrap(true);

QT笔记——QLabel设置自动换行

这种方法 ,我试了一下,好像不支持英文 和 数字 效果如下:它并没有进行换行,不符合我们需要的
QT笔记——QLabel设置自动换行

2.自定义写法 来让QLabel 进行 换行功能

#pragma once

#include <QtWidgets/QWidget>
#include "ui_QLabelLineFeedTest.h"
#include <QResizeEvent>
#include <QFontMetrics>

class QLabelLineFeedTest : public QWidget
{
    Q_OBJECT

public:
    QLabelLineFeedTest(QWidget *parent = Q_NULLPTR);

    QString setLineFeed(QString str, int width);  //设置换行  字符个数进行自定义换行
    QString setLineFeed2(QString str,int width);  //根据QFontMetrics 获取字符宽度来自定义换行


protected:
    void resizeEvent(QResizeEvent* event)Q_DECL_OVERRIDE;

private:
    Ui::QLabelLineFeedTestClass ui;

};

#include "QLabelLineFeedTest.h"
#include <QFont>
#include <QDebug>


QLabelLineFeedTest::QLabelLineFeedTest(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);

	ui.label->adjustSize();
    //设置自动换行
    ui.label->setWordWrap(true);

    //超长文本
	//ui.label->setText(QStringLiteral("中文你好中文你好中文你好中文你好中文你好中文你好中文你好中文你好中文你好中文你好中文你好中文你好中文你好中文你好中文你好中文你好中文你好"));
    //ui.label->setText(QStringLiteral("1as4d65a4d65as1d32as4r89w4tg6d1gsd46h4tf6dj1gf4864f61as56f4e89s4g65se1h65fds7yh48r1de6h5r74968"));

	
}

QString QLabelLineFeedTest::setLineFeed(QString text,int width)
{
    if (text.size() <= 0)
        return "";

    if (width > text.size() || width <= 0)
        return text;


	QString strText = text;
	int AntoIndex = 1;
	if (!strText.isEmpty())
	{

		for (int i = 1; i < strText.size() + 1; i++)  //width个字符换一行
		{
			if (i == width * AntoIndex + AntoIndex - 1)
			{
				strText.insert(i, "\n");
				AntoIndex++;
			}

		}
	}
    return strText;
}

QString QLabelLineFeedTest::setLineFeed2(QString text, int pxWidth)
{
	QString strText = text;
	int AntoIndex = 1;
	QFont font = ui.label->font();
	QFontMetrics fm(font);

	if (!strText.isEmpty())
	{
		for (int i = 1; i < strText.size() + 1; i++)///
		{
			if (fm.width(strText.left(i)) > pxWidth * AntoIndex) //当strText宽度大于pxWidth px的时候添加换行符
			{
				AntoIndex++;
				strText.insert(i - 1, "\n");
			}
		}
	}
	return strText;
}




void QLabelLineFeedTest::resizeEvent(QResizeEvent* event) 
{
	Q_UNUSED(event);
	ui.label->setText((setLineFeed2(QStringLiteral("444444444444dsa你好dasdasdasda44444444dsada4444444444446中文545645dsadasdaws316574897984316549879798715634"), this->width())));

}

我们发现 代码写了,但是好像只能一直往后,而且并没有换行(向右拉,可以向第一行添加字符,但是向左拉,并没有换行)
QT笔记——QLabel设置自动换行
解决问题:如果我不设置 最小宽度的话 ,就不能进行换行
QT笔记——QLabel设置自动换行

QT笔记——QLabel设置自动换行
上面的自定义方法是其他人的,略左一些小变动:
https://blog.csdn.net/lvdepeng123/article/details/84841689?spm=1035.2023.3001.6557&utm_medium=distribute.pc_relevant_bbs_down_v2.none-task-blog-2defaultOPENSEARCHRate-5-84841689-bbs-391113277.pc_relevant_bbs_down_v2_opensearchbbsnew&depth_1-utm_source=distribute.pc_relevant_bbs_down_v2.none-task-blog-2defaultOPENSEARCHRate-5-84841689-bbs-391113277.pc_relevant_bbs_down_v2_opensearchbbsnew文章来源地址https://www.toymoban.com/news/detail-503836.html

到了这里,关于QT笔记——QLabel设置自动换行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element ui设置table自适应表格宽,不自动换行

    在我们平常开发使用element ui中的table时,会出现数据过长自动换行的结果, 如果把宽给死的情况下也不太适合,接下来提供二种方式去动态计算每个盒子的宽度。 第一种方式 表格加** table-layout=\\\'auto’ **属性 表格加tableAuto类名 el-table-column标签不设置宽度 但这种方式纯在二个

    2024年02月11日
    浏览(24)
  • 【工具】IDEA开发常用配置-编码设置、自动导包、类注释、方法注释、提示自动忽略大小写、自动换行、SQL格式、格式配置等

    1.1 编码设置 New Projects Settings- Settings for New Projects...-Editor-File Encodings 设置本项目和全局项目编码为 UTF-8 ;配置文件 properties 也需要设置为 UTF-8 ,需勾选 Transparent native-to-ascii conversion ,勾选之后配置文件中文能正常识别。 1.2 自动导包设置 New Projects Settings- Settings for New Proj

    2024年02月04日
    浏览(43)
  • Qt 鼠标移入QLabel、离开QLabel、点击QLabel显示不同的效果

    通过Qt建立一个窗口应用,经常会出现以下的应用场景:即鼠标移入、离开以及点击一个QLabel时,QLabel相应的样式发生改变,发生诸如“ 边框加粗 ”、“ 背景色改变 ”、“ 显示文本 ”等变化,本案例通过编写一个继承于QLabel的MyLabel类实现上述需求。通过重写enterEvent、le

    2024年02月13日
    浏览(31)
  • Qt中在QLabel上画点,重写QLabel类

    QT中label进行绘图 1.首先新建一个类,让这个类继承QLabel 2.在类中对鼠标点击事件及绘图事件进行重写 3.然后在UI框架下添加label控件, 4.右键label控件,添加重写的类,将其提升为刚刚写好的类 mylabel.h mylabel.cpp

    2024年02月13日
    浏览(33)
  • Qt 使用QLabel的派生类实现QLabel的双击响应

            在QLabel中没有双击等事件响应,需要 构建其 派生类 ,自定义 信号(signals) 、重载 事件函数(event) ,最后在Qwidget中 使用connect链接即可 ,进而实现响应功能。         对于其余没有需求事件响应的QObject同样适用。         此外,该功能同样可以 使用 事件过滤器 ,

    2024年02月13日
    浏览(34)
  • 解决弹性布局父元素设置高自动换行,子元素均分高度问题(align-content: flex-start)

    案例: 效果 当循环的item大于足够多的时候(垂直的高度大于父元素的高造成可以滑动的情况下) 情况就很正常。 但是要在item少的情况下也要是这样的效果。 这个时候就需要用到 align-content: flex-start ; 对于vue也是一样的解决办法。

    2024年02月22日
    浏览(36)
  • Qt 之 QWidget QLabel

    Qt Creator 以工程项目 的方式对源码进行管理一个Qt Creator工程包含不同类型的文件 。 .pro 项目描述文件 .pro.user用户配置描述文件- .h头文件 .cpp源文件 .ui界面描述文件 资源文件(图片,音频,等) pro 项目描述文件的基本组成 #一注释起始符 : 以“#”开始,到这一行结束。快捷

    2024年02月13日
    浏览(34)
  • Qt中QLabel怎么用

    这篇文章给大家分享的是有关Qt中QLabel怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 主要成员函数: 1.void setText(QString); //设置label框内的文本. 2.void hide(); //隐藏label框. 3.void setBuddy(QWidget*); //把另一个部件设为label框的伙伴,方便快捷

    2024年02月17日
    浏览(26)
  • QT QLabel控件(使用详解)

            本文详细的介绍了TextLabel控件的各种操作,例如:显示边框、设置文字、设置字体、设置信息提示框、状态提示、居中对齐、加载图片、自适应图片大小、设置位置大小、样式表等操作。 本文作者原创,转载请附上文章出处与本文链接。 QLabel控件(使用详解)目录

    2024年02月15日
    浏览(30)
  • Qt 改变QLabel背景颜色

    在桌面应用程序开发时,需要显示一些状态信息,例如客户端是否掉线,串口是否打开等,我们可以用一些标志显示给用户,例如如果QLabel显示绿色,表示连接成功,显示黑色表示失败。 方法一:使用Qt调色板,代码如下: 只要改变R,G,B的值即可实现各种颜色,例如(0, 255

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包