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

   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功能简单,但非常有用,以此作为理解记录,更好的使用。