当前位置: 首页 > news >正文

【QT笔记】使用QScrollArea实现多行文本样式显示

目录

一、QScrollArea 的基本概念

二、demo代码

 三、实现效果

1、页面空间足够,无滚动条时显示效果

2、有滚动条时显示效果


一、QScrollArea 的基本概念

QScrollArea 是 Qt 框架中用于提供一个滚动条区域,允许用户滚动查看比当前可视区域更大的内容的控件。它本身不直接显示内容,而是将内容(通常是一个QWidget或其子类)作为其子项,并通过滚动条来访问这些内容的全部。QScrollArea支持水平和垂直滚动,并且可以根据需要自动调整滚动条的出现。

二、demo代码

#include "mainwindow.h"
#include <QApplication>#include <QObject>
#include <QGroupBox>
#include <QPushButton>
#include <QCheckBox>
#include <QRadioButton>
#include <QVBoxLayout>
#include <QScrollArea>
#include <QLabel>
#include <QTextCodec>
#include <QColor>#pragma execution_character_set("utf-8")int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;QWidget *pGroupBox = new QWidget(&w);QScrollArea* pSCrollArea = new QScrollArea(&w);QVBoxLayout *layout = new QVBoxLayout;layout->addWidget(new QLabel(QObject::tr("这是固定文本")));layout->addStretch();pGroupBox->setLayout(layout);layout->insertWidget(1, new QLabel(QObject::tr("这是第一行")));layout->insertWidget(1, new QLabel(QObject::tr("这是第二行")));layout->insertWidget(1, new QLabel(QObject::tr("这是第三行")));layout->insertWidget(1, new QLabel(QObject::tr("这是第四行")));layout->insertWidget(1, new QLabel(QObject::tr("这是第五行")));layout->insertWidget(1, new QLabel(QObject::tr("这是第六行")));layout->insertWidget(1, new QLabel(QObject::tr("这是第七行")));layout->insertWidget(1, new QLabel(QObject::tr("这是第八行文本:文字会很长很长很长很长很长很长很长很长很长很长很长很长")));QString htmlContent = "测试文本<font color='blue'>%1</font> 是一个蓝色文字。<font color='red'>%2</font>";QString text = htmlContent.arg("示例文本").arg("红色文本");QLabel* pText = new QLabel;pText->setTextFormat(Qt::RichText);pText->setText(text);layout->insertWidget(1, pText);layout->setSpacing(20);     // 控件之间间距layout->setContentsMargins(16,16,16,16);pSCrollArea->setWidgetResizable(true);  // 设置滚动区大小pSCrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);pSCrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);pSCrollArea->setWidget(pGroupBox);pSCrollArea->setStyleSheet("QWidget{""    background:#FFFFFF;""}""QScrollBar{""    border:none;""    background:#FFFFFF;""    margin: 0px,0px,0px,0px;""}""QScrollBar:vertical {""    width: 8px;""}""QScrollBar:horizontal {""    height: 8px;""}""QScrollBar::handle{""    background: #D9D9D9;""    border-radius:4px;""    margin: 0px 0px;""}""QScrollBar::add-line,QScrollBar::sub-line {""    height: 0px;""}""QScrollBar::add-page,QScrollBar::sub-page {""    background:#FFFFFF;""}""QScrollBar::handle:hover {""    background: #D9D9D9;""    border-radius:4px;""}");w.setCentralWidget(pSCrollArea);w.setWindowTitle("文本显示demo");w.setMinimumSize(50,50);w.show();return a.exec();
}

 三、实现效果

1、页面空间足够,无滚动条时显示效果

2、有滚动条时显示效果

http://www.lryc.cn/news/532358.html

相关文章:

  • 大模型中提到的超参数是什么
  • 【Uniapp-Vue3】z-paging插件组件实现触底和下拉加载数据
  • UE虚幻引擎No Google Play Store Key:No OBB found报错如何处理
  • OKHttp拦截器解析
  • STM32标准库移植RT-Thread nano
  • c++11总结26——std::regex
  • langchain教程-12.Agent/工具定义/Agent调用工具/Agentic RAG
  • leetcode_双指针 125.验证回文串
  • ML.NET库学习001:基于PCA的信用卡异常检查之样本处理与训练
  • 【华为OD机考】华为OD笔试真题解析(1)--AI处理器组合
  • edu小程序挖掘严重支付逻辑漏洞
  • 力扣 279. 完全平方数
  • 鸿蒙生态潮起:开发者的逐浪之旅
  • Diskgenius系统迁移之后无法使用USB启动
  • Kafka 可靠性探究—副本刨析
  • 我的博文天地测试报告
  • EtherCAT主站IGH-- 35 -- IGH之pdo_list.h/c文件解析
  • 嵌入式开发神器:Buildroot的介绍和使用方法
  • JavaScript系列(61)--边缘计算应用开发详解
  • 【LeetCode】day15 142.环形链表II
  • 代理对象与目标对象
  • 【Kubernetes Pod间通信-第3篇】Kubernetes中Pod与ClusterIP服务之间的通信
  • DNN(深度神经网络)近似 Lyapunov 函数
  • 128陷阱
  • PromptSource和LangChain哪个更好
  • 构成正方形的数量:算法深度剖析与实践
  • Redis持久化-秒杀系统设计
  • 音视频入门基础:RTP专题(8)——使用Wireshark分析RTP
  • OpenAI 实战进阶教程 - 第六节: OpenAI 与爬虫集成实现任务自动化
  • SpringUI Web高端动态交互元件库