Qt组件-QLabel

举报
yd_221104950 发表于 2022/09/24 23:53:26 2022/09/24
【摘要】 打开QLabel的头文件:qlabel.h,有一个重要的信息: Q_PROPERTY(QString text READ text WRITE setText) Q_PROPERTY(Qt::...

打开QLabel的头文件:qlabel.h,有一个重要的信息:

 Q_PROPERTY(QString text READ text WRITE setText)
    Q_PROPERTY(Qt::TextFormat textFormat READ textFormat WRITE setTextFormat)
    Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap)
    Q_PROPERTY(bool scaledContents READ hasScaledContents WRITE setScaledContents)
    Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment)
    Q_PROPERTY(bool wordWrap READ wordWrap WRITE setWordWrap)
    Q_PROPERTY(int margin READ margin WRITE setMargin)
    Q_PROPERTY(int indent READ indent WRITE setIndent)
    Q_PROPERTY(bool openExternalLinks READ openExternalLinks WRITE setOpenExternalLinks)
    Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags
               WRITE setTextInteractionFlags)
    Q_PROPERTY(bool hasSelectedText READ hasSelectedText)
    Q_PROPERTY(QString selectedText READ selectedText)


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

QLabel有12个属性

从这里我们可以看到QLabel有12个属性,并且知道它是什么类型,读和写的方法分别是什么,我们列一个表:

属性名 类型 读方法 写方法
text QString text setText
textFormat TextFormat textFormat setTextFormat
pixmap QPixmap pixmap setPixmap
scaledContents bool hasScaledContents setScaledContents
alignment Alignment alignment setAlignment
wordWrap bool wordWrap setWordWrap
margin int margin setMargin
indent int indent setIndent
openExternalLinks bool openExternalLinks setOpenExternalLinks
textInteractionFlags TextInteractionFlags textInteractionFlags setTextInteractionFlags
hasSelectedText bool hasSelectedText
selectedText QString selectedText

使用例子:

  1. text : 设置文本
// text属性
label = new QLabel(this);
label-> setText("Hello world");
qDebug()<< label->text()<<Qt::endl;

  
 
  • 1
  • 2
  • 3
  • 4
  1. textFormat:设置文本格式,这样Qt就知道如何处理文本了
    这个属性值可以有如下这些:
    • Qt::PlainText 纯文本
    • Qt::RichText 富文本,即支持解释HTML标记
    • Qt::AutoText 根据Qt::mightBeRichText() 返回的值决定如何显示文本,如果是true,则用Qt::RichText 显示,否则用Qt::PlainText解释。
    • Qt::MarkdownText 以markdown标记来解决
	label = new QLabel(this);
   	label-> setText("* Hello world");
   	qDebug()<< label->text()<<Qt::endl;
   	label->setTextFormat(Qt::MarkdownText);

  
 
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

  • pixmap:设置图片
	QPixmap qp = QPixmap(":/images/icon/you.png");
   	label->setPixmap(qp);
   	label->setGeometry(qp.rect());
   	label->setScaledContents(true);

  
 
  • 1
  • 2
  • 3
  • 4
  • alignment:设置文本齐方式
// alignment属性
label->setAlignment(Qt::AlignRight); // 右对齐
qDebug()<< label->alignment()<<Qt::endl;

  
 
  • 1
  • 2
  • 3
  • wordWrap:设置自动换行
   label = new QLabel(this);
   label-> setText("Hello world!I Love The World!");
   qDebug()<< label->text()<<Qt::endl;
   label->setWordWrap(true);

  
 
  • 1
  • 2
  • 3
  • 4

请添加图片描述

  • margin:外边距,即label的内容最外部与QFrame最里面的距离
label->setMargin(20);

  
 
  • 1
  • indent:缩进,这是相对对齐方式来缩进,即如果 alignment() 是Qt::AlignTop,那么缩进就是相对顶部来缩进的。
label->setIndent(20);

  
 
  • 1
  • openExternalLinks :QLabel是用QDesktopServices::openUrl()否自动打开外部链接,而不是发出 linkActivated()信号,如果是true,即自动打开外部链接。
	QString str = tr(
           "Website: <a href='%1'>%1</a>");
   	str = str.arg("https://www.baidu.com");
   	label = new QLabel(str,this);
   	label->setTextFormat(Qt::RichText);
   	label->setOpenExternalLinks(true);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • textInteractionFlags 指定QLabel在显示文本时应如何与用户输入交互。
    它的值可以有如下这些:
    在这里插入图片描述
	// 设置文字可以选择
   label->setTextInteractionFlags(Qt::TextSelectableByMouse);

  
 
  • 1
  • 2
  • hasSelectedText 指示是否有文本被选择了
   label = new QLabel("Website",this);
   label->setTextInteractionFlags(Qt::TextSelectableByMouse);
   label->setSelection(0,7);
   qDebug()<< label->hasSelectedText()<<Qt::endl;

  
 
  • 1
  • 2
  • 3
  • 4
  • selectedText 被选择了文本
qDebug()<< label->selectedText()<<Qt::endl;

  
 
  • 1

QLabel其他有用的方法

设置选择的文本setSelection(),只有设置了文本是可选择的才有效:

	label = new QLabel("Website",this);
   	label->setTextInteractionFlags(Qt::TextSelectableByMouse);
   	label->setSelection(0,7);

  
 
  • 1
  • 2
  • 3

使用 Qt 样式表,如为控件设置背景颜色,和前景颜色

    label->setStyleSheet("QLabel{background-color:red; color:white}");

  
 
  • 1

设置Label的大小

   // 重置 label 的大小
   label->resize(200, 60);

  
 
  • 1
  • 2

设置Label字体的大小

   // 设置 label 上显示文本的字体
   label->setFont(QFont("宋体", 18, QFont::Bold, true));

  
 
  • 1
  • 2

设置 label 自动缩放其内容,这样加载的图片会以填充所有可用空间

    label->setScaledContents(true);


  
 
  • 1
  • 2

在QLabel显示gif图片

   	QMovie *movie = new QMovie(this);       // 创建一个动图对象
    movie->setFileName(":/images/icon/hello.gif");// 加载一个动图
    label->setMovie(movie);                 // 在 label 上设置动图
   	movie->start();

  
 
  • 1
  • 2
  • 3
  • 4

槽函数


public Q_SLOTS:
    void setText(const QString &);//设置lable
    void setPixmap(const QPixmap &);//设置lable
#ifndef QT_NO_PICTURE
    void setPicture(const QPicture &);//设置lable
#endif
#if QT_CONFIG(movie)
    void setMovie(QMovie *movie);//设置lable
#endif
    void setNum(int);//设置lable
    void setNum(double);//设置lable
    void clear();// 清除label上的内容

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

对于这些函数,可以根据需要加到相应信号的处理上。

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/126815395

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。