Qt常用控件之标签QLabel
- 创业
- 2025-08-24 08:09:01

标签QLabel
QLabel 标签用来显示文本和图片,在 Qt 中使用频率很高。
1. Label属性 属性说明textQLabel 中的文本。textFormat文本的格式。其中 Qt::PlainText 为纯文本;Qt::RichText 为富文本(支持 html 格式); Qt::MarkdownText 为 markdown 格式; Qt::AutoText 为根据内容自动决定文本格式。pixmapQLabel 内部包含的图片。scaledContents为 true 表示内容自动拉伸填充,为 false 则不会。(如自动填充图片)alignment对齐方案。可以设置水平和垂直方向如何对齐。wordWrap为 true 内部的文本会自动换行,为 false 则不会。indent设置文本缩进,水平和垂直方向都生效。margin内部文本和边框之间的边距。(与 indent 的不同点在于,margin 在上下左右四个方向都生效,而 indent 只生效两个方向)openExternalLink是否允许打开一个外部链接(如当 QLabel 文本包含一个 url 时)。buddy让 QLabel 关联一个 “伙伴” ,点击 QLabel 时就会激活对应的伙伴(如伙伴是一个 QCheckBox ,那么该 QCheckBox 就会被选中)。 2. 更改label的文本格式 //widget.cpp #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); ui->label->setTextFormat(Qt::PlainText); ui->label->setText("这是一段纯文本"); ui->label_2->setTextFormat(Qt::RichText); ui->label_2->setText("<b>这是一段富文本</b>"); ui->label_3->setTextFormat(Qt::MarkdownText); ui->label_3->setText("## 这是一段markdown"); } Widget::~Widget() { delete ui; } 3. QLabel设置图片如果要对 QLabel 控件设置图片,可以使用 setPixmap() 接口设置 QLabel 的 pixmap 属性,将图片添加到 QLabel 中,然后将 setScaledContents(true),这样图片就会自动填充,与 QLabel 的大小保持一致。
接着,可以将 QLabel 设置为与窗口大小一致,使用:
void setGeometry(int x, int y, int w, int h) void setGeometry(const QRect &)但要注意的是,如果是直接设置值,那么当窗口被拖拽时,QLabel 的大小是不会随窗口大小改变的。实际上,当我们拖拽放大或缩小窗口时,会持续触发窗口的 resize 事件(resizeEvent)。同时,Qt 为该事件留下了一个 size() 接口,用于获取窗口改变后的 QRect 对象。
我们只需要重写该事件的虚函数,让每次拖拽窗口时,都更新 QLabel 的大小即可:
//widget.cpp #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); ui->label->setPixmap(QPixmap(":/jienigui.jpg")); ui->label->setScaledContents(true); } Widget::~Widget() { delete ui; } void Widget::resizeEvent(QResizeEvent *event) { ui->label->setGeometry(0,0,event->size().width(),event->size().height()); /*这里写this->width()也是可以的, 主要是通过重写resizeEvent()让QLabel的大小随事件的触发进行调整*/ }注意要在 widget.h 里添加 resizeEvent 的声明,以及添加 #include <QResizeEvent> 头文件。
拖拽窗口改变窗口的大小,图片会随之改变大小。
4. 设置QLabel文本对齐方式首先为了方便查看 QLabel 的边界,可以在控件右侧的 QFrame 中设置 frameShape ,选择能看到四个边框的属性即可:
然后,在代码中使用 setAlignment() 接口设置文本的对齐方式即可,文本对齐有四个枚举变量:
枚举变量作用Qt::AlignLeft左对齐Qt::AlignRight右对齐Qt::AlignTop上对齐Qt::AlignBottom下对齐Qt::AlignHCenter水平居中对齐Qt::AlignVCenter垂直方向居中对齐Qt::AlignBaseline垂直与基线对齐Qt::AlignJustify水平方向调整间距两端对齐可以使用 | 使用多种对齐方式,如 Qt::AlignLeft|Qt::AlignTop 是左上对齐,Qt::AlignCenter 等价于 Qt::AlignHCenter | Qt::AlignVCenter。
5. 设置QLabel自动换行使用 setWordWrap(true) 可以将 wordWrap 属性设置为自动换行:
//widge.cpp #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); ui->label->setWordWrap(true); ui->label->setText("人生就是起起落落落落落落落落落落落落落落落落落落落落落落落落落落"); } Widget::~Widget() { delete ui; } 6. 设置QLabel缩进使用 setIndent(int px) 接口可以设置 QLabel 的缩进长度,填入一个整数表示缩进的像素。注意 ident 是全文缩进,即文本所有的行都会缩进该值,且 indent 只在两个方向上生效,具体哪个方向要看 alignment 是如何对齐的。
//widge.cpp #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); ui->label->setWordWrap(true); ui->label->setAlignment(Qt::AlignLeft); ui->label->setIndent(40); ui->label->setText("人生就是起起落落落落落落落落落落落落落落落落落落落落落落落落落落"); ui->label_2->setWordWrap(true); ui->label_2->setAlignment(Qt::AlignLeft|Qt::AlignTop); ui->label_2->setIndent(40); ui->label_2->setText("人生就是起起落落落落落落落落落落落落落落落落落落落落落落落落落落"); } Widget::~Widget() { delete ui; }可以看到 label 设置为左对齐,只有左边被缩进了 40 个像素,而 label_2 设置了左上对齐,左边和上边都被缩进了 40 个像素。
7. 设置QLabel边距使用 setMargin() 接口可以设置 QLabel 的左右边距。与 indent 属性不同的是,margin 的边距在四个方向上都生效:
//widge.cpp #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); ui->label->setWordWrap(true); ui->label->setAlignment(Qt::AlignLeft); ui->label->setMargin(40); ui->label->setText("人生就是起起落落落落落落落落落落落落落落落落落落落落落落落落落落"); ui->label_2->setWordWrap(true); ui->label_2->setAlignment(Qt::AlignLeft|Qt::AlignTop); ui->label_2->setMargin(40); ui->label_2->setText("人生就是起起落落落落落落落落落落落落落落落落落落落落落落落落落落"); } Widget::~Widget() { delete ui; }可以看到对齐方式没有影响到 margin 属性的边距。
8. QLabel设置伙伴关系当 QLabel 设置了一个 CheckBox 为伙伴关系后,在 QLabel 的文本中写上 &[key](例如 &A ),可以将 Ctrl+A 设置为 QLabel 的快捷键,而 QLabel 与 CheckBox 绑定了伙伴关系,该 CheckBox 就会被选中。实际这个功能好像也没有什么用。
Qt常用控件之标签QLabel由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Qt常用控件之标签QLabel”