QListWidget的函数,信号介绍

前言

Qt版本:6.8.0

该类用于列表模型/视图

QListWidgetItem函数介绍

作用

在这里插入图片描述

QListWidget是Qt框架中用于管理可交互列表项的核心组件,主要作用包括:

  1. 列表项管理
  • 支持动态添加/删除项:addItem(), takeItem()
  • 批量操作:addItems()添加多个项
  • 排序功能:sortItems()自动排序
  1. 交互功能
# 创建列表控件
list_widget = QListWidget()# 添加图标项
list_widget.addItem(QListWidgetItem(QIcon("icon.png"), "带图标的项"))# 信号处理
list_widget.itemClicked.connect(handle_click)
  1. 显示控制
  • 支持多种视图模式:setViewMode(QListView.IconMode)
  • 自定义项样式:通过setItemWidget()嵌入自定义控件
  • 调整布局:setFlow(QListView.LeftToRight)控制排列方向
  1. 数据绑定
  • 直接存取项数据:item.text()
  • 关联数据结构:setCurrentRow()同步选择状态

典型应用场景

  • 文件选择列表
  • 配置选项面板
  • 聊天消息记录
  • 可拖拽排序的任务列表

与QListView的区别在于:QListWidget提供了更简便的item-based API,适合快速开发;而QListView需要配合Model/View架构,适合处理复杂数据关系。

公共函数

构造函数与析构函数

QListWidget(QWidget *parent = nullptr)
  • 功能:创建列表控件
  • 参数
    • parent:父窗口指针(可选)
  • 示例
    QListWidget *listWidget = new QListWidget(this);  // 创建列表控件
    
virtual ~QListWidget()
  • 功能:析构函数,释放资源

基础操作函数

void addItem(QListWidgetItem *item)
  • 功能:添加自定义项到列表末尾
  • 参数
    • item:要添加的列表项指针
  • 示例
    QListWidgetItem *item = new QListWidgetItem("New Item");
    listWidget->addItem(item);  // 添加项到列表末尾
    
void addItem(const QString &label)
  • 功能:直接通过文本添加项到列表末尾
  • 参数
    • label:项显示的文本
  • 示例
    listWidget->addItem("Simple Item");  // 直接添加文本项
    
void addItems(const QStringList &labels)
  • 功能:批量添加多个文本项到列表末尾
  • 参数
    • labels:字符串列表
  • 示例
    QStringList items = {"Item1", "Item2", "Item3"};
    listWidget->addItems(items);  // 批量添加
    

编辑与查找

void closePersistentEditor(QListWidgetItem *item)
  • 功能:关闭项的持久编辑器
  • 参数
    • item:需要关闭编辑器的项
  • 示例
    listWidget->closePersistentEditor(item);  // 关闭指定项的编辑器
    
int count() const
  • 功能:返回列表项的个数
  • 返回值:整数型数量
  • 示例
    int total = listWidget->count();  // 获取总项数
    
QListWidgetItem *currentItem() const
  • 功能:返回当前选中的项
  • 返回值:项指针(未选中时返回 nullptr
  • 示例
    QListWidgetItem *current = listWidget->currentItem();
    if (current) qDebug() << "当前选中项:" << current->text();
    
int currentRow() const
  • 功能:返回当前选中项的行号(从 0 开始)
  • 返回值:行号(未选中返回 -1)
  • 示例
    int row = listWidget->currentRow();  // 获取当前行号
    

项管理

void editItem(QListWidgetItem *item)
  • 功能:启动指定项的编辑模式
  • 参数
    • item:要编辑的项
  • 示例
    listWidget->editItem(item);  // 进入编辑模式
    
QList<QListWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags) const
  • 功能:根据匹配规则查找项
  • 参数
    • text:要匹配的文本
    • flags:匹配规则(如 Qt::MatchExactly
  • 返回值:符合条件的项列表
  • 示例
    auto items = listWidget->findItems("Test", Qt::MatchContains);  // 查找包含"Test"的项
    
QModelIndex indexFromItem(const QListWidgetItem *item) const
  • 功能:获取项的模型索引
  • 参数
    • item:目标项
  • 返回值:对应的 QModelIndex
  • 示例
    QModelIndex index = listWidget->indexFromItem(item);  // 获取索引
    

插入与移除

void insertItem(int row, QListWidgetItem *item)
  • 功能:在指定行插入自定义项
  • 参数
    • row:插入位置(0-based)
    • item:要插入的项
  • 示例
    QListWidgetItem *newItem = new QListWidgetItem("Inserted");
    listWidget->insertItem(2, newItem);  // 插入到第三行
    
void insertItem(int row, const QString &label)
  • 功能:在指定行插入文本项
  • 参数
    • row:插入位置
    • label:项文本
  • 示例
    listWidget->insertItem(0, "First Item");  // 插入到第一行
    
void insertItems(int row, const QStringList &labels)
  • 功能:在指定行批量插入多个文本项
  • 参数
    • row:起始行号
    • labels:要插入的文本列表
  • 示例
    listWidget->insertItems(1, {"A", "B", "C"});  // 从第二行开始插入
    

状态检查

bool isPersistentEditorOpen(QListWidgetItem *item) const
  • 功能:检查项是否处于持久编辑状态
  • 返回值true 表示编辑器已打开
  • 示例
    if (listWidget->isPersistentEditorOpen(item)) {// 处理编辑器已打开的情况
    }
    
bool isSortingEnabled() const
  • 功能:检查是否启用了自动排序
  • 返回值true 表示启用排序
  • 示例
    bool sorted = listWidget->isSortingEnabled();
    

项操作

QListWidgetItem *item(int row) const
  • 功能:获取指定行的项
  • 参数
    • row:行号
  • 返回值:项指针(无效行返回 nullptr
  • 示例
    QListWidgetItem *item = listWidget->item(3);  // 获取第四行的项
    
QListWidgetItem *itemAt(const QPoint &p) const
  • 功能:获取指定坐标处的项(相对列表控件)
  • 参数
    • p:坐标点
  • 返回值:项指针(无项返回 nullptr
  • 示例
    QListWidgetItem *item = listWidget->itemAt(QPoint(50, 100));  // 获取(50,100)处的项
    
QListWidgetItem *itemFromIndex(const QModelIndex &index) const
  • 功能:从模型索引获取项
  • 参数
    • index:模型索引
  • 返回值:对应的项指针
  • 示例
    QListWidgetItem *item = listWidget->itemFromIndex(index);
    

部件管理

QWidget *itemWidget(QListWidgetItem *item) const
  • 功能:获取项上设置的部件
  • 参数
    • item:目标项
  • 返回值:部件指针(未设置返回 nullptr
  • 示例
    QWidget *widget = listWidget->itemWidget(item);  // 获取自定义部件
    
void openPersistentEditor(QListWidgetItem *item)
  • 功能:为项打开持久编辑器(始终可编辑)
  • 示例
    listWidget->openPersistentEditor(item);  // 启用持久编辑
    
void removeItemWidget(QListWidgetItem *item)
  • 功能:移除项上的自定义部件
  • 示例
    listWidget->removeItemWidget(item);  // 移除部件
    

布局与选择

int row(const QListWidgetItem *item) const
  • 功能:返回项的行号
  • 参数
    • item:目标项
  • 返回值:行号(无效项返回 -1)
  • 示例
    int row = listWidget->row(item);  // 获取项的行号
    
QList<QListWidgetItem *> selectedItems() const
  • 功能:返回所有选中的项
  • 返回值:选中项列表
  • 示例
    auto selected = listWidget->selectedItems();  // 获取所有选中项
    

设置当前项

void setCurrentItem(QListWidgetItem *item)
  • 功能:设置当前选中项
  • 参数
    • item:目标项
  • 示例
    listWidget->setCurrentItem(item);  // 选中指定项
    
void setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command)
  • 功能:带选择模式的设置当前项
  • 参数
    • item:目标项
    • command:选择模式(如 QItemSelectionModel::Select
  • 示例
    listWidget->setCurrentItem(item, QItemSelectionModel::Toggle);  // 切换选中状态
    

排序与清理

void setSortingEnabled(bool enable)
  • 功能:启用/禁用自动排序
  • 参数
    • enabletrue 启用排序
  • 示例
    listWidget->setSortingEnabled(true);  // 启用自动排序
    
void sortItems(Qt::SortOrder order = Qt::AscendingOrder)
  • 功能:手动排序所有项
  • 参数
    • order:排序顺序(升序/降序)
  • 示例
    listWidget->sortItems(Qt::DescendingOrder);  // 降序排列
    

其他功能

QListWidgetItem *takeItem(int row)
  • 功能:移除并返回指定行的项
  • 参数
    • row:行号
  • 返回值:被移除的项指针(需手动管理内存)
  • 示例
    QListWidgetItem *removed = listWidget->takeItem(2);  // 移除第三行项
    delete removed;  // 手动释放内存
    
QRect visualItemRect(const QListWidgetItem *item) const
  • 功能:返回项在视图中的可视区域
  • 示例
    QRect rect = listWidget->visualItemRect(item);  // 获取项的位置和大小
    

重写的函数

virtual void setSelectionModel(QItemSelectionModel *selectionModel) override
  • 功能:设置自定义选择模型(高级用法)
  • 参数
    • selectionModel:自定义选择模型
  • 注意:通常不需要直接使用

公共槽函数

void clear()
  • 功能:清空所有项
  • 示例
    listWidget->clear();  // 清空列表
    
void scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)
  • 功能:滚动到指定项
  • 参数
    • item:目标项
    • hint:滚动策略(如 PositionAtTop
  • 示例
    listWidget->scrollToItem(item, QAbstractItemView::PositionAtCenter);  // 滚动到项并居中
    

信号

1. void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)

  • 触发时机:当前选中的项发生改变时(例如点击新项、通过代码设置选中项)
  • 参数
    • current:新选中的项指针(未选中时为 nullptr
    • previous:之前选中的项指针(首次选中时为 nullptr
  • 典型用途:跟踪焦点项变化,更新界面状态
  • 示例
    connect(listWidget, &QListWidget::currentItemChanged, [](QListWidgetItem *current, QListWidgetItem *prev) {if (current) qDebug() << "选中了:" << current->text();if (prev)    qDebug() << "取消选中:" << prev->text();
    });
    

2. void currentRowChanged(int currentRow)

  • 触发时机:当前选中项的行号发生变化时
  • 参数
    • currentRow:新选中项的行号(从 0 开始,未选中时为 -1)
  • 典型用途:通过行号操作数据
  • 示例
    connect(listWidget, &QListWidget::currentRowChanged, [](int row) {qDebug() << "当前行号:" << row;});
    

3. void currentTextChanged(const QString &currentText)

  • 触发时机:当前选中项的文本发生改变(包括切换选中项或直接修改项文本)
  • 参数
    • currentText:新选中项的文本内容(未选中时为空字符串)
  • 典型用途:实时监控选中项的文本变化
  • 示例
    connect(listWidget, &QListWidget::currentTextChanged, [](const QString &text) {qDebug() << "当前文本:" << text;});
    

4. void itemActivated(QListWidgetItem *item)

  • 触发时机:用户通过 双击回车键 激活项时
  • 参数
    • item:被激活的项指针
  • 典型用途:实现双击打开/执行操作
  • 示例
    connect(listWidget, &QListWidget::itemActivated, [](QListWidgetItem *item) {qDebug() << "激活项:" << item->text();});
    

5. void itemChanged(QListWidgetItem *item)

  • 触发时机:项的 数据 发生改变(如文本、图标、复选框状态等)
  • 参数
    • item:被修改的项指针
  • 典型用途:同步数据到模型或数据库
  • 示例
    connect(listWidget, &QListWidget::itemChanged, [](QListWidgetItem *item) {qDebug() << "项被修改:" << item->text();});
    

6. void itemClicked(QListWidgetItem *item)

  • 触发时机:用户 单击 项时(即使项已被选中)
  • 参数
    • item:被点击的项指针
  • 典型用途:实现点击交互逻辑
  • 示例
    connect(listWidget, &QListWidget::itemClicked, [](QListWidgetItem *item) {qDebug() << "单击了:" << item->text();});
    

7. void itemDoubleClicked(QListWidgetItem *item)

  • 触发时机:用户 双击 项时
  • 参数
    • item:被双击的项指针
  • 典型用途:快速执行操作(如打开文件)
  • 示例
    connect(listWidget, &QListWidget::itemDoubleClicked, [](QListWidgetItem *item) {openFile(item->text()); // 自定义函数});
    

8. void itemEntered(QListWidgetItem *item)

  • 触发时机:鼠标 悬停进入 项的区域时
  • 参数
    • item:被悬停的项指针
  • 典型用途:显示工具提示或高亮效果
  • 示例
    connect(listWidget, &QListWidget::itemEntered, [](QListWidgetItem *item) {QToolTip::showText(QCursor::pos(), item->text());});
    

9. void itemPressed(QListWidgetItem *item)

  • 触发时机:用户 按下鼠标按钮 在项上时(在释放前触发)
  • 参数
    • item:被按下的项指针
  • 典型用途:实现拖拽操作的起点判断
  • 示例
    connect(listWidget, &QListWidget::itemPressed, [](QListWidgetItem *item) {qDebug() << "按下项:" << item->text();});
    

10. void itemSelectionChanged()

  • 触发时机:选中项集合发生改变时(适用于多选模式)
  • 参数:无
  • 典型用途:处理多选操作后的批量处理
  • 示例
    connect(listWidget, &QListWidget::itemSelectionChanged, [=]() {auto selected = listWidget->selectedItems();qDebug() << "已选中项数:" << selected.size();});
    

信号对比表

信号名称触发动作传递参数适用场景
currentItemChanged选中项改变新旧项指针焦点跟踪
currentRowChanged选中行改变行号行号相关操作
currentTextChanged选中项文本变化新文本文本监控
itemActivated双击/回车激活被激活的项执行默认操作
itemChanged项数据修改被修改的项数据同步
itemClicked单击项被点击的项简单交互
itemDoubleClicked双击项被双击的项快速操作
itemEntered鼠标悬停进入项区域被悬停的项提示信息
itemPressed按下鼠标按钮被按下的项拖拽起点判断
itemSelectionChanged选中项集合变化(多选模式)批量操作

使用建议

  1. 避免信号循环:在槽函数中修改项数据时,注意不要触发自身信号(例如在 itemChanged 中再次修改项)
  2. 性能优化:对高频信号(如 itemEntered)进行防抖处理
  3. 多选模式:使用 itemSelectionChanged 配合 selectedItems() 获取所有选中项
  4. 数据同步:优先使用 itemChanged 而非 currentTextChanged 跟踪数据变化,后者仅监控当前项

其他函数

在这里插入图片描述

示例

#include <QApplication>
#include <QListWidget>
#include <QListWidgetItem>
#include <QIcon>
#include <QMessageBox>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 创建 QListWidgetQListWidget listWidget;listWidget.setWindowTitle("QListWidgetItem 示例");listWidget.resize(400, 300);// 1. 添加普通文本项QListWidgetItem *item1 = new QListWidgetItem("普通文本项");listWidget.addItem(item1);// 2. 添加带图标和文本的项QIcon icon(":/icon.png"); // 请确保有合适的图标资源QListWidgetItem *item2 = new QListWidgetItem(icon, "带图标的项");listWidget.addItem(item2);// 3. 添加带复选框的项QListWidgetItem *item3 = new QListWidgetItem("带复选框的项");item3->setFlags(item3->flags() | Qt::ItemIsUserCheckable);item3->setCheckState(Qt::Unchecked);listWidget.addItem(item3);// 4. 添加带自定义数据、颜色和提示的项QListWidgetItem *item4 = new QListWidgetItem("自定义项");item4->setData(Qt::UserRole, 12345); // 存储自定义数据item4->setBackground(Qt::yellow);item4->setForeground(Qt::blue);item4->setToolTip("这是一个带有自定义数据和颜色的项");listWidget.addItem(item4);// 5. 添加只读项QListWidgetItem *item5 = new QListWidgetItem("只读项");item5->setFlags(item5->flags() & ~Qt::ItemIsEditable);listWidget.addItem(item5);// 6. 响应点击,显示项的详细信息QObject::connect(&listWidget, &QListWidget::itemClicked, [&](QListWidgetItem *item){QString info;info += "文本: " + item->text() + "\n";info += "是否选中: " + QString(item->isSelected() ? "是" : "否") + "\n";info += "复选框状态: ";if (item->flags() & Qt::ItemIsUserCheckable)info += (item->checkState() == Qt::Checked ? "已选中" : "未选中");elseinfo += "无";info += "\n";info += "自定义数据: " + item->data(Qt::UserRole).toString() + "\n";info += "提示: " + item->toolTip() + "\n";QMessageBox::information(&listWidget, "项信息", info);});listWidget.show();return app.exec();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/906892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ModbusRTU转profibusDP网关与RAC400通讯报文解析

ModbusRTU转profibusDP网关与RAC400通讯报文解析 在工业自动化领域&#xff0c;ModbusRTU和ProfibusDP是两种常见的通信协议。ModbusRTU以其简单、可靠、易于实现等特点&#xff0c;广泛应用于各种工业设备之间的通信&#xff1b;而ProfibusDP则是一种高性能的现场总线标准&am…

Python容器

一、容器 1. 列表【】&#xff1a;有序可重复可混装可修改 [元素1&#xff0c;元素2&#xff0c;元素3&#xff0c;...] • 可以容纳多个元素 • 可以容纳不同类型的元素&#xff08;混装&#xff09; • 数据是有序存储的&#xff08;有下标序号&#xff09; • 允许重复数…

webpack面试问题

一、核心概念 Webpack的构建流程是什么? 答案: 初始化:读取配置,创建Compiler对象编译:从入口文件开始,递归分析依赖关系,生成依赖图模块处理:调用Loader转换模块(如babel-loader)输出:将处理后的模块组合成Chunk,生成最终文件Loader和Plugin的区别? Loader:文件…

uniapp-商城-66-shop(2-品牌信息显示,数据库读取的异步操作 放到vuex actions)

完成页面的显示&#xff0c;但是还需要进行修改&#xff0c;这里涉及到修改中的信息同步显示。也会涉及到数据的读取&#xff0c;修改和同步。 本文介绍了如何使用Vuex管理品牌数据&#xff0c;实现数据的同步显示和修改。主要内容包括&#xff1a;1.将获取品牌数据的异步操作封…

使用Pyinstaller打包python,全过程解析【2025最详细】

一、如何使用 Pyinstaller 打包 Python 程序 1.打开终端 右键点击文件夹空白处&#xff0c;选择 打开于 > 打开终端 2.安装 pyinstaller 在打开的终端中&#xff0c;输入命令【pip install pyinstaller】 使用 Python 包管理工具 pip 来安装 Pyinstaller。等待安装过程结…

GPU加速Kubernetes集群助力音视频转码与AI工作负载扩展

容器编排与GPU计算的结合&#xff0c;为追求性能优化的企业开辟了战略转型的新路径 基于GPU的托管Kubernetes集群不仅是技术选择&#xff0c;更是彻底改变企业处理高负载任务的战略部署方式。 随着人工智能和机器学习项目激增、实时数据处理需求的剧增&#xff0c;以及高性能媒…

LINUX 524 rsync+inotify 调试(问题1:指定端口无法同步/已通过;问题2:rsync.log文件中时间不显示/已显示)

怎么把java文件夹给传过去了 rsync inotify 监控代码实时传输调试 没看到日志 这里面有了 rsync -e"ssh -p 3712" -av /root/app/java/ code192.168.235.100:/home/code/backup/java_backup/ 文件夹后面的/要加上 [rootlocalhost java]# cat /var/log/rsync.log…

Python入门手册:条件判断

条件判断是编程中不可或缺的一部分&#xff0c;它允许程序根据不同的条件执行不同的代码块。Python提供了if、elif和else语句来实现条件判断。通过这些语句&#xff0c;你可以控制程序的流程&#xff0c;使其能够根据不同的情况做出相应的反应。本文将详细介绍Python中的条件判…

x-cmd install | cargo-selector:优雅管理 Rust 项目二进制与示例,开发体验升级

目录 功能亮点安装优势特点适用场景总结 还在为 Rust 项目中众多的二进制文件和示例而烦恼吗&#xff1f;cargo-selector 让你告别繁琐的命令行&#xff0c;轻松选择并运行目标程序&#xff01; 功能亮点 交互式选择&#xff1a; 在终端中以交互方式浏览你的二进制文件和示例&…

Baklib知识中台高效实践路径

知识中台全周期构建路径 Baklib在构建知识中台全周期管理体系时&#xff0c;以知识价值转化为核心导向&#xff0c;通过三阶段递进实现闭环运作。在知识采集阶段&#xff0c;运用智能爬虫与API接口技术&#xff0c;聚合分散在业务系统、文档库及沟通工具中的碎片化知识资产&am…

mapbox进阶,手写放大镜功能

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.1 ☘️mapboxgl.Map style属性二、🍀手写放大镜功能1. ☘️实现思路2. ☘️…

康佳Java开发面试题及参考答案

面向对象三大特性是什么&#xff1f;请举例说明多态。 面向对象编程&#xff08;OOP&#xff09;的三大核心特性是封装、继承和多态。封装是将数据和操作数据的方法绑定在一起&#xff0c;并隐藏对象的内部实现细节&#xff1b;继承允许一个类继承另一个类的属性和方法&#x…

Spark集群架构解析:核心组件与Standalone、YARN模式深度对比(AM,Container,Driver,Executor)

一、核心组件定义与关系拆解 1. ApplicationMaster&#xff08;AM&#xff09; 定义&#xff1a;YARN 框架中的应用管理器&#xff0c;每个应用程序&#xff08;如 Spark 作业&#xff09;对应一个 AM。职责&#xff1a; 向 YARN 的 ResourceManager 申请资源&#xff08;Con…

IS-IS报文

前言&#xff1a; IS-IS采用分层架构&#xff0c;所有Level-2和Level 1-2路由器构成了骨干区域&#xff0c;同一区域的Level-1路由器构成了普通区域IS-IS支持三种认证方式&#xff0c;分别是接口认证、区域认证、路由域认证IS-IS有四种报文类型&#xff0c;分别是IIH、CSNP、P…

【Flutter】多语言适配-波斯语RTL从右到左

前言 在多语言适配的时候&#xff0c;波斯语的显示是从右到左的&#xff0c;需要针对一些控件进行单独适配。 核心逻辑&#xff1a;根据语言动态设置 Directionality Widget build(BuildContext context) {final isRtl Localizations.localeOf(context).languageCode fa;r…

【VSCode】在远程服务器Linux 系统 实现 Anaconda 安装与下载

【远程服务器】Anaconda 安装与下载 一、 安装Anaconda【方式一】直接在远程服务器下载&#xff0c;通过 wget 命令:【方式二】在本地电脑下载&#xff0c;在同意 vscode上传到服务器二、配置环境变量 本文基于 VSCode 进行远程服务器的配置&#xff0c;VSCode 相关安装可参考下…

【深度学习-Day 17】神经网络的心脏:反向传播算法全解析

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

线性回归神经网络从0到1

1.线性方程和向量乘法 深度学习的基础就是从线性回归方程的理论进入的。简单的线性回归方程为 比如大家日常中买房子&#xff0c;价格受到哪些因素影响呢&#xff1f; 比如房龄、交通、是否是学区、有无配套超市、公园&#xff0c;这些基本是外部条件&#xff0c;内部条件诸如…

11|省下钱买显卡,如何利用开源模型节约成本?

不知道课程上到这里&#xff0c;你账户里免费的5美元的额度还剩下多少了&#xff1f;如果你尝试着完成我给的几个数据集里的思考题&#xff0c;相信这个额度应该是不太够用的。而ChatCompletion的接口&#xff0c;又需要传入大量的上下文信息&#xff0c;实际消耗的Token数量其…

文章代码|皮层/表皮特异性转录因子 bZIP89 的自然变异决定了玉米侧根发育和抗旱能力

数据和材料可用性&#xff1a;评估本文结论所需的所有数据都包含在论文和/或补充材料中。本研究中的大量 RNA-seq 读数存放在 NCBI 序列读取档案 &#xff08;www.ncbi.nlm.nih.gov/sra&#xff09; 中&#xff0c;登录代码为 SRP446501/PRJNA980895。scRNA-seq、DAP-seq 和 DN…