一、前言
QLabel标签继承于QFrame,QFrame继承于QWidget,是Qt中最基础也是最常用的控件。
QLabel不提供用户交互功能,标签的视觉外观可以通过多种方式进行配置,并且可以使用它为其他界面的标签,QLabel可以用来显示以下这些内容:
- 纯文本:纯文本数据
- 富文本:又称呼为格式化文本,具有风格、排版等信息,如颜色、式样(黑体、斜体等)、字体尺寸、特性(如超链接)等
- 显示图像信息
- 显示gif文件
- 直接显示一个double或者int类型的数字
- 什么内容都不显示也可以
因此在实际项目中,标签可以用来做品名、重量、名称、体积等简要标识,温度、电压、电流、功率等实时信息标识,公司、产品logo的显示,网址、导航等超链接,gif动画,视频文件单帧图片显示,甚至直接设置固定大小用来做占位符。
二、QLabel类
1、text
该属性代表当前标签文本。
QString text() const //当前内容
void setText(const QString &) //设置内容
2、alignment
该属性代表文本水平和垂直方向对齐,同一时间可以同时指定两个方向的对齐方式。默认的对齐方式为水平靠左、垂直居中。
Qt::Alignment alignment() const; // 获取对齐方式
void setAlignment(Qt::Alignment align); // 设置对齐方式
3、indent
该属性代表文本的缩进值。
int indent() const; // 获取文本缩进值
void setIndex(int indent); //设置文本缩进值
4、margin
该属性代表显示内容的边距。
int margin() const; // 获取边距
void setMargin(int margin); // 设置边距
5、hasSelectedText
该属性表示是否有任何选定的文本,如果用户已经选择了部分或全部文本,则hasSelectedText()返回true,否则返回false。
注意:在标签上设置的textInteractionFlags需要包括TextSelectableByMouse或TextSelectableByKeyboard。
bool hasSelectedText() const
6、selectedText
该属性表示所选文本,如果没有选定文本,则此属性的值为空字符串。默认情况下,此属性包含一个空字符串。
注意:在标签上设置的textInteractionFlags需要包括TextSelectableByMouse或TextSelectableByKeyboard。
QString selectedText() const
7、textInteractionFlags
该属性表示标签在显示文本时应如何与用户输入交互,默认值为Qt::TextSelectableByMouse。
Qt::TextInteractionFlags textInteractionFlags() const
void setTextInteractionFlags(Qt::TextInteractionFlags flags)
定义 描述 Qt::NoTextInteraction 不与用户交互 Qt::TextSelectableByMouse 可以用鼠标选择文本,并使用上下文菜单或标准键盘快捷键将文本复制到剪贴板。 Qt::TextSelectableByKeyboard 可以用键盘上的光标键选择文本。显示一个文本光标。 Qt::LinksAccessibleByMouse 链接可以用鼠标突出显示和激活。 Qt::LinksAccessibleByKeyboard 链接可以使用tab键聚焦,并使用enter键激活。 Qt::TextEditable 文本是可编辑的。 Qt::TextEditorInteraction TextSelectableByMouse | TextSelectableByKeyboard | TextEditable Qt::TextBrowserInteraction TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard
8、openExternalLinks
该属性表示QLabel是否应该使用QDesktopServices::openUrl()自动打开链接,而不是发出linkActivated()信号。
注意:标签上设置的textInteractionFlags需要包括LinksAccessibleByMouse或LinksAccessibleByKeyboard。
bool openExternalLinks() const
void setOpenExternalLinks(bool open)
9、pixmap
该属性表示当前显示的图像信息。
const QPixmap *pixmap() const; // 获取显示的图像
void setPixmap(const QPixmap &pixmap); // 设置显示的图像
实例:QPixmap加载png图片,然后通过setPixmap方法显示图片。scaledContents默认值为false,当启用并且标签显示像素图时,它将缩放像素图以填充可用空间。
QLabel *label = new QLabel(this);
QPixmap picture1 ;
picture1.load("D:/creator-gs-01.png");
label = new QLabel(this);
label->setPixmap( picture1);
label->setScaledContents(true);//自适应大小
label->resize(200, 200);
10、scaledContents
该属性用于确定标签是否缩放其内容以填充所有可用空间。
bool hasScaledContenes() const; // 判断是否允许图像缩放
void setScaledContents(bool on); // 设置是否允许图像缩放
bool hasScaledContenes() const; // 判断是否允许图像缩放
void setScaledContents(bool on); // 设置是否允许图像缩放
11、wordWrap
该属性代表显示的文本是否允许换行。
bool wordWrap() const; // 判断是否允许换行
void setWordWrap(bool on); // 设置是否允许换行
12、movie
该属性表示当前显示的gif信息。
QMovie *movie() const; //获取当前的gif信息
void setMovie(QMovie *movie);//显示一个通过QMovie加载的gif文件
实例:使用QMovie加载需要播放的gif文件,设置播放速度,200代表200%,也就是2X的速度。
QLabel *label = new QLabel(this);
ui->label->resize(320,200);
QMovie *movie = new QMovie("D:/earth.gif");
movie->setSpeed(200);//设置速度
movie->start();
ui->label->setMovie(movie);
13、textFormat
该属性表示当前的文本格式。
Qt::TextFormat textFormat() const
void setTextFormat(Qt::TextFormat)
定义 描述 Qt::PlainText 纯字符串 Qt::RichText 富文本 Supported HTML Subset Qt::AutoText 自动识别纯字符串还是富文本
14、公共函数
1)buddy
设置小部件为“伙伴”。
QWidget *buddy() const
void setBuddy(QWidget *buddy)
实例:当用户按下Alt+N时,焦点跳转到Name字段,当用户按下Alt+P时,焦点跳转到Phone字段。
ui->label->setText("&Name:");
ui->label_2->setText("&Phone:");
ui->label->setBuddy(ui->lineEdit);
ui->label_2->setBuddy(ui->lineEdit_2);
2)setNum
使用setNum,参数直接传入int或者double,直接会被转字符串输出。
void setNum(double num)
void setNum(int num)
3)clear
清除当前标签内容。
void clear()
15、信号
1)linkActivated
当用户单击链接时发出此信号
void linkActivated(const QString &link)
2)linkHovered
当用户鼠标停留在链接上时发出此信号
void linkHovered(const QString &link)
实例:QLabel 显示使用HTML 4标记子集指定的富文本,
ui->label->setOpenExternalLinks(true);
ui->label->setText("<a style='color: green; text-decoration: none' href = https://blog.csdn.net/u014491932/article/details/131740931?spm=1001.2014.3001.5501>CSDN");
ui->label->setAlignment(Qt::AlignCenter);
ui->label_2->setText("<a style='color: green; text-decoration: none' href = https://blog.csdn.net/u014491932/article/details/131740931?spm=1001.2014.3001.5501>CSDN");
ui->label_2->setAlignment(Qt::AlignCenter);
connect(ui->label_2, &QLabel::linkActivated, [=](QString url){
QDesktopServices::openUrl(QUrl(url));
});