我创建了一个ListView,它显示了用户定义的几页内容(纯文本)。显示的页面是委托。一次只能看到一个页面。我决定使用它来捕捉一个项目,就像iOS'发射器工作。用户只需在页面之间轻弹即可。 (这将用于触摸屏)
我需要获取当前显示页面的索引以进行某些操作。 ListView的currentIndex总是保持== 0.我怎么能得到它?
对于喜欢代码的人:
ListView
{
onCurrentIndexChanged: console.log(currentIndex) // this gets called only once - at startup
delegate: Column
{
// The page displayed, only one page at a time
}
}
由于
答案 0 :(得分:12)
有很多方法可以获取屏幕中显示的当前项目的索引。如果您可以获取当前页面的x-y坐标,则可以在ListView中使用indexAt方法。
在每个委托中,您可以在委托范围内使用index
角色找到索引。 index
就像您在模型中声明的角色,由ListView自动分配。例如,
ListView
{
delegate: Column
{
property int indexOfThisDelegate: index
//...
}
}
引入index
角色here:
委托也可以使用包含模型中项目索引的特殊索引角色。请注意,如果从模型中删除项目,则此索引设置为-1
另一种方法是显式地为ListView中的currentItem
属性赋值,因此视图可以自行滚动。这是Qt文档中的一个简单example,与您的应用程序类似。
答案 1 :(得分:1)
我知道这已经很老了,但我遇到了同样的问题,并花了一些时间试图找到一种方法来获取对我有用的 currentIndex 。在我的情况下,我需要更改 ListView 的宽度,所以我每次都必须重新计算 currentIndex 。
但后来我找到了highlightRangeMode属性。当它设置为ListView.StrictlyEnforceRange
时, currentIndex 将始终自动更新,并包含当前可见项目的正确索引。
ListView {
highlightRangeMode: ListView.StrictlyEnforceRange
// ...
}
答案 2 :(得分:0)
你可以这样做:
if (isset($_GET['name']) && !is_empty($_GET['name']))
{
$kname = mysql_escape_string($_GET['name']);
$query = "SELECT name, wins, losses, otl, pts, gf, ga FROM standings2014_2015 WHERE name=".$kname.";";
$result = $db->query($query);
if ($result)
{ echo "<table class='table sortable'>";
foreach ($result as $row)
{
$tr .= '
<tr>
<td>'.$name.'</td>
<td>'.$wins.'</td>
<td>'.$losses.'</td>
<td>'.$otl.'</td>
<td>'.$pts.'</td>
<td>'.$gf.'</td>
<td>'.$ga.'</td>
</tr>
';
echo $tr;
}
echo "</table>";
}
}else{
//YOUR ACTUAL CODE
}