gpt4 book ai didi

c++ - 防止所选项目在 QListView 中超出 View

转载 作者:行者123 更新时间:2023-11-30 04:02:03 27 4
gpt4 key购买 nike

我使用的 QListView 只有单个选择和由向上和向下箭头处理的选择更改。一切都按预期工作,但有一个小问题。如果许多项目被添加到列表的顶部,那么当前选择的项目就有可能向下移出 View 。有什么方法可以检测到这种情况何时发生?谢谢。

最佳答案

我找到了解决方案,但首先我尝试做一些类似的事情,我运行计时器,每 2 秒我将新行插入列表的开头并尝试检测,所选项目是否仍然可见?

//somewhere in the constructor, it is not important
ListModel = new QStandardItemModel();
ui->listView->setModel(ListModel);

现在当我想插入新行时,我编写了代码,检查项目是否可见

    QStandardItem* Items = new QStandardItem(QString::number(qrand()%100));
ListModel->insertRow(0,Items);
// here we get rect of current selected item
QRect rec = ui->listView->visualRect(ui->listView->currentIndex());

//here we get all listView region, convert it to rect and check is our listView
//contain selected item
if(ui->listView->viewport()->visibleRegion().boundingRect().contains(rec))
{
qDebug() << "visible";//all good
}
else
{
qDebug() << "not visible";//not good, we need do something
//you want to detect it, so you get!
//now you know that item "runs away from you"
//and you can do some actions
someAction();
}

我在我的电脑上测试它,当我能看到元素时,我得到可见的词,当元素试图“从我身边跑开”时我变得不可见

希望对你有帮助。

关于c++ - 防止所选项目在 QListView 中超出 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25427257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com