Qt入门之常用qt控件认知之QLabel

QLabel是Qt最为基本和常用的一个控件。其定义包含在<QLabel>中。

1、整体简介(QLabel功能):QLabel的功能就是显示文字或者图片,没有用户交互功能,这也就是经常不位QLabel控件设置焦点的原因,QLabel外观可以通过不同的方式进行设置,同时有一个非常重要的功能,其可以作为另外一个控件的焦点助记键,即设置QLabel快捷键则将焦点跳到指定的控件,如QLineEdit,此控件通过QLabel的setBuddy函数设置。

QLabel可以使用的类型及设置方法:

纯出文本或者富文本 使用 setText(QString)

一个pximap图片  使用setPixmap(QPixmap)

一个movie    使用setMovie(QMovie)

一个int或者double数字 则使用setNumber(int、number),会将数字转换为纯文本字符

清空内容则使用clear。

需要注意的是,使用了任何上述的一种方式,之前的内容都会被clear掉。

默认Qlabel显示内容适合left-alignment 和vcenter-alignment,自适应扩展的。

2、调整Qlabel外观(QLabel属性设置)

1)调整内容的显示位置

alignment,是Qt::Alignment,通过setAlignment(Qt::Alignment)设置alignment()获取属性值,内容显示位置,常见有上下左右及上下居中和左右居中

intent,内容缩进像素,使用inten()获取,setIntent(int pix)设置,这里需要提醒一下,如果intent为负数,默认为-1或者没有设置,则此值是根据一下规则计算出来的:

如果frameWidth()是0,则intent是0,如果大于0,则intent值是字符‘x’在当前控件所使用对应的字体font()占用宽度的一般。

2)调整QLabel控件的边界margin,则用setMargin(int)

3)文本内容可以设置其是否根据换行进行换行及bool wordWrap,setWordWrap进行设置。需要注意的是换行,是根据输出内容之间的空白符,如果一个字符串中没有空格等字符,即字符长度是为一个单词则会出现这样的问题--没有自动进行换行,这正是word之意

4)scaledContents bool:缩放内容,此属性如果在显示的是一个图片的时候是否将整个图片填充到整个可用的区域,使用setScaledContents(bool)进行设置

5)text属性,是QLabel的文本内容,通过setText(QString)设置,text()获取,如果没有则获取位空,同样设置了时会将之前的内容清空。

pixmap属性,存储QLabel设置为图片的属性。pixmap获取,setPixmap设置。如果没有则获取位空,同样设置了时会将之前的内容清空。

6)textFormat:QLabel显示文本的类型,setTtextFormat(Qt::TextFormat)进行设置,其取值:

Qt::PlainText   0   纯文本

Qt::RichText   1   富文本

Qt::AutoText   2   Qt::mightBeRichText() 返回是Qt::RichText则为1,否则为0

7)hasSelectedText : const bool是否选择文本内容,也在QLabel内容为text时使用

hasSelectedText()获取是否有,selectedText()返回选择的字符,可以设定字符使用void setSelection(int start,int length)将起始位置和长度的字符。

textInteractionFlags:表示QLabel如何交互,当显示内容为text的时候。

如果包含 Qt::LinksAccessibleByKeyboard 焦点策略被设置为 Qt::StrongFocus. 如果是 Qt::TextSelectableByKeyboard 则设置为 Qt::ClickFocus.默认是 Qt::LinksAccessibleByMouse.

如果需要通过鼠标键盘选取文本,则此鼠标必须是TextSelectableByMouse 或则TextSelectableByKeyboard.

3、QLabel交互功能:设置QLabel的助记符及buddy(伙伴),即使用QLabel设置快捷键,会在快捷键后将焦点设置到其buddy之上。设是用到了QLabel交互控件的功能。此buddy可以是任何一个widget控件。使用setBuddy(QWidget *)设置,其QLabel必须是text内容,并且使用‘&’符号设置了助记字符,如

4、QLabel其他常使用的接口

QLabel::QLabel ( QWidget * parent = 0, Qt::WindowFlagsf = 0 )

创建一个空的QLabel

QLabel::QLabel ( const QString & text, QWidget * parent = 0, Qt::WindowFlagsf = 0 )

创建以一个QLabel,显示内容为文本

void clear() [slot]清空显示内容

QWidget *buddy()返回其buddy对象,如果有,否则返回0,通过setBuddy设置

QMovie *movie()返回QLabel的movie内容,没有则返回0,通过setMovie(QMovie)设置的

QPicture *picture()返回QLabel的picture内容,没有返回0,通过setPicture(QPicture)设置的

int  selectionStart()返回选择字符的开始位置,没有则返回-1.通过void setSelection(int start,int length)设置选择对应文本的其实位置和长度

总结:QLabel可显示文件及图片内容。每次设置不同的内容,会调用clear清空上次的内容。

其次,QLabel不需要交互功能,唯一用到的交互功能是设置助记符,将快捷键指定到其buddy控件

根据QLabel内容进行属性的设置和获取,如显示文本时可以设置wordWrap,图片是可以设置scaledContets等

QLabel功能简单,但非常有用,以此作为理解记录,更好的使用。

时间: 2024-08-01 12:12:32

Qt入门之常用qt控件认知之QLabel的相关文章

Qt入门之常用qt控件认知之QLayout

了解布局,首先得清楚一个概念,就是容器控件.容器控件就是可以容纳别的控件的一种控件,如QWidget,所以就会出现父类控件与子类控件.为了很好的管理这种父子类控件,常用的有几种方法: 第一种就是使用绝对位置,setGeometry定位子类控件相对于父类控件.第二种就是常见的布局. 布局管理,其实就是为容器控件管理子类控件的位置和尺寸,所以布局本身没有存在的意义,其需要和容器控件搭配使用,为容器控件管理子控件服务. 而布局QLayout类其实只是一组预先撰写好的代码,相当于提前写出了以一个控件存放

Qt入门之常用qt控件认知之QLineEdit

QLineEdit是继QLabel和QAbstractButton之后最为常见的输入类编辑控件.顾名思义,其是单行编辑控件,经常用于编辑简短的信息,如用户登录信息及密码输入等.作为编辑框其具有常见的编辑动作,如清除内容clear,复制copy,剪切cut,粘贴paste,重做rudo.撤销undo,全选selectAll及设置编辑信息setText及删除dselete和del及backspace.根据编辑的内容及显示,QLineEdit有不同的显示模式:QLineEdit:::Normal 正常

topic4:Qt入门之常用qt控件认知之Button系列

按钮,常常被理解为触发一种动作请求或者命令,是与用户进行指令交互的操作.Qt中Button系列根据用途被划分为不同的定义,其实现框架为QAbstractButton提供按钮的通用性功能,此为抽象基类,所以无法进行实例化.用户需要继承定义此类,实现paintEvent,实现具体的展示.常见的Button有QPushButton,QToolButton,QRadioButton及QCheckBox.这种根据用户分为标记(toggle)的与非toggle的.此种模式用到的典型的c++一种抽象继承模式,

基于Qt的第三方库和控件

====================== 基于Qt的第三方库和控件 ======================     libQxt --------   http://dev.libqxt.org/libqxt/wiki/Home   按照文档中所流露的意思,libQxt实现了一些“Qt本来就应该有但实际上没有”的功能. 对应Qt相应的Module,Qxt有 QxtCore.QxtGui.QxtNetwork.QxtSql等模块作为Qt功能的 补充,此外,还提供了QxtWeb(Web S

Qt编程之UI与控件布局

当然,大家都知道UI界面可以用Qt Designer在约束环境下设置编辑.ui文件,再将.ui文件转换成对应的ui_XXX.h文件,这头文件中的内容是:用C++语言实现真正的界面布局.uic -o "outputfile" "inputfile.ui"命令行可以转换 当然,也可以自己用C++来实现界面布局利用成员函数SetGeometry什么的,但是那样的开发效率就下降了,BUG概率引入的也会加大. 这篇文章很好的演示了只利用C++实现的界面设计布局: http:/

android_常用UI控件_01_TextView3_点击打开新的activity

点击textview打开新的activity (1) MainActivity.java package com.example.android_textview_opennewactivity; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.text.SpannableString; import android.text.Spanned;

android_常用UI控件_01_TextView4_rollingsubtitles效果加链接文字

(1)Mainactivity.java package com.example.android_textview_rollingsubtitles; import java.sql.Wrapper; import android.os.Bundle; import android.app.Activity; import android.text.Html; import android.text.TextUtils; import android.text.TextUtils.Truncat

基于jQuery 常用WEB控件收集

Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件. Horizontal accordion: jQuery jQuery-Horizontal Accordion 具有XBOX360 blade界面风格的水平方向Accordion. jQuery-Horizontal Accordion AutoComplete-JQuery jQuery插件易于集成到现在的表单中(Form). AutoComplete-JQuery Facebook

android_常用UI控件_01_TextView2

显示图片和文字 MainActivity.java package com.example.android_textview_showqqface; import java.lang.reflect.Field; import android.os.Bundle; import android.app.Activity; import android.graphics.Color; import android.graphics.drawable.Drawable; import android