1、QLabel的对齐方式等一些属性:
(1)对齐方式:
QLabel
对齐的方法:
Qt::Alignment alignalignment() const; //获取对齐方式
void setAlignment(Qt::Alignment align); //设置对齐方式
Qt::Alignment
属性:
Qt::AlignLeft //水平方向靠左。
Qt::AlignRight //水平方向靠右。
Qt::AlignHCenter //水平方向居中。
Qt::AlignJustify //水平方向调整间距两端对齐。
Qt::AlignTop //垂直方向靠上。
Qt::AlignButton //垂直方向靠下。
Qt::AlignVCenter //垂直方向居中。
Qt::AlignCenter //水平和垂直方向都居中
想要水平和竖直方向都居中时:
ui -> label -> setAlignment(Qt::AlignCenter);
ui -> label -> setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
(2)缩进:
int indent() const; //获取文本的缩进量
void setIndent(int); //设置文本的缩进量
(3)边距:
int margin() const; //获取边距
void setMargin(int margin); //设置边距
(4)是否允许换行:
bool wordWrap() const; // 判断是否允许换行
void setWordWrap(bool on); // 设置是否允许换行
(5)是否允许缩放:
bool hasScaledContenes() const; // 判断是否允许图像缩放
void setScaledContents(bool on); // 设置是否允许图像缩放
2、QLabel自适应大小:
(1)adjustSize():
//根据setText中的text的长度自适应
ui -> label -> adjustSize();
(2)setScaledContents():
ui -> label -> setScaledContents(true);
上面两个属性设置以后显示的效果是一样的,设置label
背景颜色以后会发现,两者都是形成对文字的一圈包裹:
但是,设置以后输出label
的width
和height
以后就会发现,adjustSize()
修改了label
的宽高,而setScaledContents()
只是自适应的显示,并不会改变label
的宽高。
如果要在自适应大小的情况下,留出一部分空间,可以用resize
来留下空区域。
qqmessage->adjustSize();
qqmessage->resize(qqmessage->width()+30,qqmessage->height()+20);
//居中
qqmessage->setAlignment(Qt::AlignCenter);
qqmessage->setStyleSheet("background-color:rgb(191,191,191);border-radius:5px;");
3、QLabel播放gif:
通过QLabel
的setMovie()
方法实现。
mainwindow.h
中:
#include <QMovie>
mainwindow.cpp
中:
QMovie *Movie = new QMovie("F:/1/1");
Movie->setSpeed(1000);
Movie->setBackgroundColor(QColor(10, 10, 10));
//ui->label用于显示gif
ui->label->setMovie(Movie);
ui->label->show();
Movie->start();
4、设计动态的QQ消息气泡框:
(1)分析:
QQ消息的气泡大致可以按照如下结构进行划分:
三个部分分别用一个控件显示即可。中间的小角可以在图标库中找到一个比较像的:
(2)设计气泡框样式:
使用参数来动态地显示样式:
QWidget* message(const QString &name,const QString &icon, const QString &message) {
QWidget *qwidget = new QWidget(this);
QPushButton *qqicon = new QPushButton(qwidget); //头像
QLabel *h1 = new QLabel(qwidget);
QLabel *qqmessage = new QLabel(qwidget);
//头像,qq名,qq信息,最后信息时间
qqicon->setStyleSheet(QString("width:34px;height:34px;border:0px;border-radius:17px;border-image:url(:/new/prefix1/source/%1);").arg(icon));
h1->setStyleSheet("background-color:rgb(255,255,255,0%);border-image:url(:/new/prefix1/source/h1.png);");
h1->resize(8,10);
//设置消息内容
qqmessage->setText(message);
//自适应长度
qqmessage->adjustSize();
qqmessage->resize(qqmessage->width()+30,qqmessage->height()+20);
//水平和竖直方向都居中显示
qqmessage->setAlignment(Qt::AlignCenter);
qqmessage->setStyleSheet("background-color:rgb(191,191,191);border-radius:5px;");
qqicon->move(15,10);
h1->move(55,20);
qqmessage->move(63,15);
qwidget->resize(290,80);
return qwidget;
}
(3)调用气泡控件:
使用气泡框,其中a,b,c
为主界面类中传递过来的参数:
QWidget *message1 = message(a,b,c);
message1->setParent(ui->groupBox_2);
message1->move(10,8);