QT开发中文网

QStackedWidget 如何动态添加删除page 保证序号不变化呢

如果你希望在动态添加和删除 QStackedWidget 的页面时保持页面的序号不变,可以使用自定义的标识符(ID)来代替索引。这样就可以根据 ID 来进行页面的查找、插入和移除操作,而不受序号变化的影响。

以下是一种实现方法:

  1. 定义一个 QMap 用于维护页面与其对应的 ID:
QMap<QWidget*, int> pageIdMap;
  1. 添加页面时,为每个新页面生成一个唯一的 ID,并将页面与 ID 关联起来:
QWidget* newPage = new QWidget();  // 创建新的页面

// 生成唯一的 ID
int newId = generateUniqueId();

// 将新页面添加到 QStackedWidget
ui->stackedWidget->addWidget(newPage);

// 关联页面与 ID
pageIdMap.insert(newPage, newId);
  1. 删除指定 ID 对应的页面:
int targetId = ...;  // 指定要删除的页面对应的 ID

QWidget* targetPage = nullptr;

// 查找并删除对应的页面
for (auto it = pageIdMap.begin(); it != pageIdMap.end(); ++it) {
    if (it.value() == targetId) {
        targetPage = it.key();
        ui->stackedWidget->removeWidget(targetPage);
        pageIdMap.remove(targetPage);
        delete targetPage;  // 需要手动释放内存
        break;
    }
}
  1. 获取指定 ID 对应的页面:
int targetId = ...;  // 指定要获取的页面对应的 ID

QWidget* targetPage = nullptr;

// 查找指定 ID 对应的页面
for (auto it = pageIdMap.begin(); it != pageIdMap.end(); ++it) {
    if (it.value() == targetId) {
        targetPage = it.key();
        break;
    }
}

// 使用 targetPage 进行其他操作

通过使用自定义的 ID 来标识和操作页面,就可以在动态添加和删除页面时保持序号不变。注意,在使用自定义 ID 时需要确保每个 ID 的唯一性。你可以根据具体需求来确定如何生成唯一的 ID。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=8289

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?