Qt组件-QLabel
【摘要】
打开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 |
使用例子:
- text : 设置文本
// text属性
label = new QLabel(this);
label-> setText("Hello world");
qDebug()<< label->text()<<Qt::endl;
- 1
- 2
- 3
- 4
- 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)