QLabel 控件 提供了一个文本或图片的显示。
QLabel 是用来显示一个文本或一个图像。没有用户交互功能提供。标签的外观可以通过各种方式配置,它可以用于其他窗口的助记键指定焦点。
QLabel的继承关系为
QObject Class and QPaintDevice Class->QWidget Class->QFrame Class->QLabel Class
创建一个QLabel对象:
QLabel * label = new QLabel(this); // 创建堆对象
显示文本:
label->setText("some text");
// 或
label->setText(str);
显示图片:
QPixmap pix = QPixmap("E:\QTpro\farmer\1.png");
label->setPixmap(pix);
// 或
label->setPixmap(QPixmap("E:\\QTpro\\farmer\\1.png"));
// 或
QImage * image = new QImage("./pic.jpg");
label->setPixmap(QPixmap::fromImage(image));
//中途换图片
image->load("./pic2.jpg");
label->show();
显示动画:
QMovie* movie = new QMovie("new.png"); //绘制jpeg的图片也是可以的
// 或
QMovie* movie = new QMovie("new.gif"); //绘制动画也是可以的
movie->start();
label.setMovie(movie);
设置框架样式(setFrameStyle函数由QFrame继承),对齐方式,
label->setFrameStyle(QFrame::NoFrame | QFrame::Raised); // 设置框架样式
label->setAlignment(Qt::AlignCenter);// 设置对齐方式为居中
设置字体颜色有四种方法:
第一种是使用setPalette()方法:
QPalette palette = label->palette(); // 获取调色板
palette.setColor(QPalette::WindowText, QColor(Qt::red)); // 设置字体颜色
// 或
// 使用QMovie时要设置QLabel背景透明,
palette.setColor(QPalette::Background, QColor(0x00, 0xff, 0x00, 0x00));
label->setPalette(palette); // 设置调色板
第二种是使用样式表:
label->setStyleSheet("color:red;");
label->setStyleSheet("color:#ff6600;");
第三种是可以使用QStyle(没用过):
在Qt Demo中有一个很好的讲解QStyle的例子,可以参考学习。
第四种是使用HTML样式:
label = new QLabel("<h2><i>Helloi><font color=red>Qt!font>h2>");
设置字体,大小:
QFont font;
font.setPointSize(12); // 设置字号
label->setFont(font); // 设置字体
// 或
label.setFont(QFont("Timers", 28, QFont::Bold));
自动适应文本的大小:
label->adjustSize();
设置QLabel显示位置:
label->setGeometry(x,y,w,h );
自动判断并换行:
label->setGeometry(QRect(328, 240, 329, 27*4)); //四倍行距
label->setWordWrap(true);
label->setAlignment(Qt::AlignTop);
设置不显示任务栏
label->setWindowFlags(Qt::FramelessWindowHint); //设置不显示任务栏
设置快捷键(官方给的代码):
QLineEdit *phoneEdit = new QLineEdit(this);
QLabel *phoneLabel = new QLabel("&Phone:", this);
phoneLabel->setBuddy(phoneEdit);
// 则可以通过“ALT+P”激活phoneEdit
清空标签内容:
label->clear();
超链接设置
一种是打开外部连接功能:
lebel->setOpenExternalLinks(true); // 关键
lebel->setText("CSDN");
label.show();
一种是
label->setText("CSDN");
label->setFixedSize(200,100);
label->move(10,10);
label->show();
connect(label, SIGNAL(linkActivated(QString)), this, SLOT(openUrl(QString)));
// 在.h里面定义一个槽private slots:
// void openUrl(QString url);
void Widget::openUrl(QString url)
{
QDesktopServices::openUrl(QUrl(url));
}
借鉴:
Qt入门-QLabel类http://blog.csdn.net/xgbing/article/details/7762331
[喝小酒的网摘]http://blog.const.net.cn/a/12615.htm
QT 实现QLabel上的超链接http://blog.csdn.net/robertkun/article/details/20562341
Qt帮助:Qt 5.4->Qt Widgets->C++ Classes->QLabel
还有好多都是从网络上各个博客上摘的都忘了连接地址了,原作者还请见谅。