0.详细介绍
QLabel类主要用来文本和图像的显示,没有提供用户交互功能.QLabel对象的视觉外观可以由用户自定义配置.它还可以为另外一个可获得焦点的控件作为焦点助力器.(后面会提到).
QLabel可以显示下列的所有类型:
Plain text //通过setText()设置显示纯文本.
Rich text //通过setText()设置富文本.
A pixmap //通过setPixmap()设置图片.
A movie //通过setMovie()设置QMovie.一般是gif动画.
A number //通过setNum()把数字转化为字符串显示.
Nothing //空文本,相当于调用了clear().
Warning:当你使用构造函数或者调用setText()函数来显示内容时,请确定好你的输入没有问题,因为QLabel需要去判断是纯文本还是富文本,是否有html标记,当然你也可以调用setTextFormat()方法来设置文本格式.
当原QLabel的内容被其他方法修改时,之前的内容会被清空.
默认情况下.QLabel对象的内容是左对齐,垂直居中的显示文本或图像的.然而,QLabel的外观可以通过多种方式进行调整和微调.
QLabel内容在QLabel中的位置可以根据调用setAlignment()和setIndent()方法来进行调整.文本格式的内容还可以根据setWordWrap()方法来进行换行.举个例子:下面这段代码在右下角设置了一个包含两行文本的凹面板(这两行都与标签的右侧一起刷新).
//创建对象,设置父对象.这个例子是在非主窗口中实现的,所以可以直接设置父窗口为this.
QLabel *label = new QLabel(this);
//设置大小.
label->resize(300,400);
//设置边框风格.凹陷下去.
label->setFrameStyle(QFrame::Panel | QFrame::Sunken);
//设置文本内容.
label->setText("first line\nsecond line");
//设置对齐方式.
label->setAlignment(Qt::AlignBottom | Qt::AlignRight);
QLabel通常用作交互式小部件的标签.为此,QLabel为添加助记(参见QKeySequence)提供了一种有用的机制,该机制将把键盘焦点设置为另一个小部件(称为QLabel的“伙伴”).下面有个例子:
当我们鼠标点击空白区域,QLineEdit对象区域内的光标会消失,当按下alt+p组合键时,光标又会出现在QLineEdit对象中,又重新获得了焦点.
//设置当前窗口的焦点策略.
this->setFocusPolicy(Qt::StrongFocus);
//创建lineEdit对象.
QLineEdit *phoneEdit = new QLineEdit(this);
phoneEdit->move(100,100);
//创建label对象.
QLabel *phoneLabel = new QLabel("&Phone:", this);
phoneLabel->move(0,100);
//设置label为lineEdit的伙伴.当我们按下alt+p组合键时,焦点会自动回到lineEdit中去.
phoneLabel->setBuddy(phoneEdit);
不止是QLabel和QLineEdit的组合,QLabel也可以和QButton等控件进行组合,比如:当QLabel对象的快捷键被按下时,作为伙伴的QButton伙伴就会相应点击按钮的事件.
1.常用函数方法
1.1->:该函数获得和设置当前内容的对齐方式.默认情况下:是左对齐垂直居中的.
Qt::Alignment alignment() const
void setAlignment(Qt::Alignment)
//设置对齐方式
label->setAlignment(Qt::AlignBottom | Qt::AlignRight)
1.2->:返回是否有被选中的文本.默认为false,没有被选中任何文本.
bool hasSelectedText() const
1.3->:设置和获取文本的缩进距离.
int indent() const
void setIndent(int)
//设置和获取边框的距离.
int margin() const
void setMargin(int)
1.4->:返回和设置QLabel显示的图像.
const QPixmap * pixmap() const
void setPixmap(const QPixmap &)
//可以直接用QPixmap显示.
label->setPixmap(QPixmap("..."));
//当然比较好的做法是使用QImage对象.
label->setPixmap(QPixmap::fromImage(QImage));
1.5->:返回和设置是否自动填充满整个内容区域.默认是false的.
bool hasScaledContents() const
void setScaledContents(bool)
QLabel *label = new QLabel(this);label->move(50,50);label->resize(100,200);label->setFrameStyle(QFrame::Panel | QFrame::Sunken);label->setPixmap(QPixmap("./res/1.png"));label->setAlignment(Qt::AlignCenter);QLabel *label2 = new QLabel(this);label2->move(200, 50);label2->resize(100, 200);label2->setScaledContents(true);label2->setFrameStyle(QFrame::Panel | QFrame::Sunken);label2->setPixmap(QPixmap("./res/1.png"));label2->setAlignment(Qt::AlignCenter);
1.6->:获得被选中的文本.
QString selectedText() const
1.7->:设置和获得对象的文本内容.
QString text() const
void setText(const QString &)
1.8->:获得和设置对象的文本格式的选择.默认是Qt::AutoText.
Qt::TextFormat textFormat() const
void setTextFormat(Qt::TextFormat)
1.9->:指定标签应该如何与用户输入交互,如果它显示文本.
Qt::TextInteractionFlags textInteractionFlags() const
void setTextInteractionFlags(Qt::TextInteractionFlags flags)
this->setFocusPolicy(Qt::StrongFocus);QLabel *label = new QLabel(this);label->move(50,50);label->resize(100,200);label->setFrameStyle(QFrame::Panel | QFrame::Sunken);label->setText("asd");label->setAlignment(Qt::AlignCenter);label->setTextInteractionFlags(Qt::TextEditorInteraction);
常用的属性有下面两个:
类似于QLineEdit的用户文本交互.
Qt::TextEditorInteraction TextSelectableByMouse | TextSelectableByKeyboard | TextEditable The default for a text editor.
类似于QTextBrower的用户文本交互.
Qt::TextBrowserInteraction TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard The default for QTextBrowser.
1.10->:返回和设置是否单词自动换行.默认是false.
bool wordWrap() const
void setWordWrap(bool on)
QLabel *label = new QLabel(this);label->move(50,50);label->resize(100,200);label->setFrameStyle(QFrame::Panel | QFrame::Sunken);label->setText("first linensecond line");QLabel *label2 = new QLabel(this);label2->move(200, 50);label2->resize(100, 200);label2->setFrameStyle(QFrame::Panel | QFrame::Sunken);//label2设置了自动换行.label2->setWordWrap(true);label2->setText("first linensecond line");
1.11->:设置QLabel对象的伙伴.
QWidget * QLabel::buddy() const
void QLabel::setBuddy(QWidget * buddy)
1.12->:返回被选中的字符串的第一个字符的下标.从0开始.
int QLabel::selectionStart() const
1.13->:选中下标为start开始,长度为length的字符串.(前提是文本能够被选择.)
void QLabel::setSelection(int start, int length)
1.14->:指定QLabel是否应该使用qdesktopservice::openUrl()自动打开链接,而不是发出link激活()信号.
bool openExternalLinks() const
void setOpenExternalLinks(bool open)
2.信号与槽
signals:
//当用户点击一个链接时,会发出此信号.前提必须把openExternalLinks属性关闭.
void linkActivated(const QString & link)
//当用户在一个链接旁边徘徊时,会发出此信号.
void linkHovered(const QString & link)
slots:
//清空内容.
void clear()
//设置gif动画.
void setMovie(QMovie * movie)
//设置内容为数字.
void setNum(int num)
void setNum(double num)
//设置显示图片.
void setPicture(const QPicture & picture)
void setPixmap(const QPixmap &)
//设置显示文本.
void setText(const QString &)
3.实例
下面有个小例子.基本上用了大量的QLabel的方法.界面很丑,不要介意..
代码到 https://download.csdn.net/download/qq_37233607/10416098下载