QT QScrollArea 滑动到指定item位置

2023-05-16

一、QT自带的api
QListWidget、QTableWidget、QTreeWidget都有自带的api可以调用,如下示例。但是当自定义一个QScrollArea区域,布局中插入多个item时,就需要自定义滑动位置了。只有你想将QScrollArea滑到最底部才能使用现成的方法

void QListWidget::scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)

QScrollArea滑到最底部代码

// 当创建一个新的widget的时候
QTimer::singleShot(100, [=]() {
ui->scrollArea->ensureWidgetVisible(w); });

二、自定义
假设创建一个QScrollArea,布局里面插入了多个item,滑动到指定位置
在这里插入图片描述
三、代码

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);

    QList<int> idList;
    idList << 100 << 150 << 200 << 250 << 300 << 350 << 400 << 450
           << 500 << 550 << 600;

    //存储插入的item
    QList<ItemForm *> itemList;

    for (int i = 0; i < 11 && idList.size() > 10; i++) {
        ItemForm *item = new ItemForm();
        item->setId(idList[i]);

        ui->itemLayout->addWidget(item);
        itemList << item;
    }

	//文本改变时,滑动到指定位置
    connect(ui->lineEdit, &QLineEdit::textChanged, std::bind(&Form::onTextChanged,
                                                             this, itemList));
}

void Form::onTextChanged(QList<ItemForm *> itemList)
{
    for (int i = 0; i < itemList.size(); i++) {
        if (itemList[i]->getId() == ui->lineEdit->text().toInt()) {
        	//item索引 * item单个高度(需要考虑布局边距)
            int val = (ui->itemLayout->indexOf(itemList[i])) * itemList[i]->height();
            ui->scrollArea->verticalScrollBar()->setSliderPosition(val);
        }
    }
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT QScrollArea 滑动到指定item位置 的相关文章

随机推荐

  • 对于程序多核优化的思考

    针对处理器的多核心多线程进行优化 现在的处理器很少有单核的 xff0c 2核的都很少了 在用python计算2的10000000次方的时候 xff0c 我观察了我的任务管理器 xff0c 首先第3个线程的使用率达到了100 xff0c 然后
  • QT QListWidget的添加与删除,滚动条显示或隐藏,判断是否滑到顶部或底部,并使QListWidgetItem自适应大小

    注意 xff1a QListWidget添加子Item时 xff0c 最外层最好设置完整背景颜色 xff0c 否则移入Item会自带淡蓝色背景 一 QListWidget 中使 QListWidgetItem自适应大小 父部件ListWid
  • QT 网络请求设置自定义cookie请求头失败的问题

    文章目录 一 背景二 示例代码1 自己组装HTTP请求 xff08 成功 xff09 2 采用项目网络组件库 xff08 失败 xff09 3 解决办法 xff08 成功 xff09 一 背景 我准备在每一次HTTP请求头中加入自己定义的c
  • QT 三角气泡提示框(文字自适应、自定义三角位置)

    文章目录 一 效果图二 实现代码1 调用示例2 BubbleTipsWidget h3 BubbleTipsWidget cpp 一 效果图 二 实现代码 1 调用示例 span class token keyword void span
  • QT 代码添加QScrollArea

    一 QScrollArea 一 这是一个控件容器类 xff0c 可以在UI中直接拖拽 xff0c 也可以使用代码进行添加 xff0c 当我们UI添加时 xff0c QScrollArea这个容器套了两层 xff0c 我们放入的控件 xff0
  • QML入门----创建qml项目(一)

    文章目录 导语一 选择菜单二 选择文件类型三 填写项目名称四 项目创建成功五 Hello World六 运行图 导语 今天开始学习qml xff0c 从hello world开始 xff0c 本来计划之前开始学的 xff0c 但是看了好多资
  • QML入门----基本语法(二)

    文章目录 基础语法1 import 导入语句2 Loader 一 类型二 对象1 id2 属性 xff08 property xff09 3 信号和信号处理器特性4 方法特性 function5 附加属性和附加信号处理器6 枚举 四 注释五
  • QML入门----图形动画基础(一)

    文章目录 一 图形动画基础1 颜色2 渐变 xff08 Gradient xff09 二 图片1 图片2 边界图片3 动态图片 三 缩放 旋转 平移变换1 使用属性2 高级变换 xff08 Transform xff09 四 状态改变使用过
  • QT Signal and slot arguments are not compatible

    一 原因 信号和槽绑定的参数不同 signals span class token operator span span class token keyword void span span class token function run
  • QML入门----图形动画基础(二)

    文章目录 导语一 混合效果二 颜色效果1 亮度对比度 xff08 BrightnessContrast xff09 2 颜色叠加3 着色4 饱和度 三 渐变效果 xff08 Gradient xff09 四 阴影效果五 模糊效果六 动感模糊
  • EXCEL基本办公操作 (求和、相除、填充日期、交换列、排序)

    文章目录 一 求和二 相除三 自动填充日期四 交换列五 进行排序 一 求和 1 拖动鼠标选中 2 同时按住 alt 跟 61 二 相除 假如要计算A列除以B列 1 先选中显示结果的框 2 在上面的框输入 61 号 xff0c 然后点击A1位
  • Ubuntu的VirtualBox虚拟机怎么识别物理机的U盘?我教你。

    首先确保 你的VBOX虚拟机安装了扩展 1 到官网上下载扩展吧 2 用VBOX打开扩展包 3 打开VBOX管理器 xff0c 点击设置 4 新建一个usb筛选器 xff0c 名字随便起 最后点击确定 正常关闭 你的虚拟机 xff0c 然后重
  • QML入门----设计器详解(拖拽添加控件)

    文章目录 导语1 基本视图2 文件类型 一 界面说明1 库 xff08 Library xff09 2 导航 xff08 Navigator xff09 3 属性 xff08 Properties xff09 4 连接视图 导语 设计器的基
  • C++11 非常方便的特性

    文章目录 C 43 43 11一 nullptr1 含义2 作用3 NULL存在的问题 二 auto1 含义2 限制3 使用场景 三 lambda1 含义2 优点3 用法 四 基于范围的for循环1 作用2 用法3 循环内更改数组 C 43
  • QML入门----C++与QML交互快速应用

    文章目录 前言一 Qt中有关QML的C 43 43 类1 QQmlEngine2 QQmlContext3 QQmlComponent4 QQmlExpresssssion 二 其他1 使用C 43 43 属性 xff08 Q PROPER
  • QML错误:Component is not ready

    一 原因 终极原因 xff1a 组件没有构建好 xff0c 有可能是加载的QML路径不对 xff0c 或者是QML代码错误 xff0c 或者是QML组件还没有加载完 二 解决办法 打印详细错误 QQmlEngine engine span
  • QT 打开程序闪烁cmd窗口

    包含多种原因 xff0c 我的原因是Pro文件多写了一些其他的 xff0c 删除了下面这句OK了 DISTFILES span class token operator 43 span span class token operator 6
  • QT UTC(T和Z格式)时间转换为北京时间

    一 UTC 协调世界时 xff0c 又称世界统一时间 世界标准时间 国际协调时间 由于英文 xff08 CUT xff09 和法文 xff08 TUC xff09 的缩写不同 xff0c 作为妥协 xff0c 简称UTC 和北京时间相差八小
  • QT 文件操作大全

    文章目录 常用文件模式一 创建文件二 读文件三 写文件四 清空文件夹五 计算文件夹个数六 计算文件夹总大小七 转换大小为B KB M G八 批量修改文件名 常用文件模式 模式含义QIODevice ReadOnly只读方式QIODevice
  • QT QScrollArea 滑动到指定item位置

    一 QT自带的api QListWidget QTableWidget QTreeWidget都有自带的api可以调用 xff0c 如下示例 但是当自定义一个QScrollArea区域 xff0c 布局中插入多个item时 xff0c 就需