使用QML自绘页面导航条

使用QML自绘页面导航条

最近使用QML制作项目,按照要求,需要制作成分页的插件。遗憾的是,QML的控件库Qt Quick都没有现成的控件,于是我尝试着自己实现自绘页面导航条。

原创文章,反对未声明的引用。原博客地址:http://blog.csdn.net/gamesdev/article/details/39376061

我首先观察CSDN的页面导航条,其实和大多数Web的页面导航条一样,都有首页、具体页码、下一页、上一页、尾页这样的元素,实现起来也不是太难。其实这个需求也算是检验QML开发能力的一次考察。

我稍微花了一点时间实现了这样的显示效果,如下图:

可以选择相应的页数,以便进行分页显示。

下载地址:这里

import QtQuick 2.2
import QtQuick.Controls 1.1

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr( "Page navigation bar example" )

    menuBar: MenuBar
    {
        Menu
        {
            title: qsTr( "File" )
            MenuItem
            {
                text: qsTr( "Exit" )
                onTriggered: Qt.quit( );
            }
        }
    }

    property var json:
    [
        [
            { "id": 1, "value": "长青路" },
            { "id": 2, "value": "建设路" },
            { "id": 3, "value": "光明路" },
            { "id": 4, "value": "矿工路" },
            { "id": 5, "value": "开源路" }
        ],
        [
            { "id": 6, "value": "唐宫中路" },
            { "id": 7, "value": "金业路" },
            { "id": 8, "value": "九都东路" },
            { "id": 9, "value": "古仓街" },
            { "id": 10, "value": "道南路" }
        ],
        [
            { "id": 11, "value": "张辽南路" },
            { "id": 12, "value": "古北街" },
            { "id": 13, "value": "开发南路" },
            { "id": 14, "value": "朔神路" },
            { "id": 15, "value": "同太路" }
        ],
        [
            { "id": 1, "value": "长青路" },
            { "id": 2, "value": "建设路" },
            { "id": 3, "value": "光明路" },
            { "id": 4, "value": "矿工路" },
            { "id": 5, "value": "开源路" }
        ],
        [
            { "id": 6, "value": "唐宫中路" },
            { "id": 7, "value": "金业路" },
            { "id": 8, "value": "九都东路" },
            { "id": 9, "value": "古仓街" },
            { "id": 10, "value": "道南路" }
        ],
        [
            { "id": 11, "value": "张辽南路" },
            { "id": 12, "value": "古北街" },
            { "id": 13, "value": "开发南路" },
            { "id": 14, "value": "朔神路" },
            { "id": 15, "value": "同太路" }
        ]
    ]

    ListModel
    {
        id: tableModel

        Component.onCompleted: append( json[0] )
    }

    property int initialColumnWidth: tableView.width / 3
    property int recordPerPage: 15
    TableView
    {
        id: tableView
        anchors.top: parent.top
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.bottom: pageNavigationBar.top
        anchors.bottomMargin: 5
        model: tableModel

        TableViewColumn
        {
            role: "id"
            title: qsTr( "id" )
            width: initialColumnWidth
        }

        TableViewColumn
        {
            role: "value"
            title: qsTr( "value" )
            width: initialColumnWidth
        }
    }

    PageNavigationBar
    {
        id: pageNavigationBar
        anchors.bottom: parent.bottom
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.margins: 5
        maxPage: json.length
        totalRecord: json.length * json[0].length

        onPageClicked:
        {
            tableModel.clear( );
            tableModel.append( json[page - 1] );
        }
    }
}
时间: 2024-11-09 02:13:41

使用QML自绘页面导航条的相关文章

Goods:分页显示页面导航条的实现

pager.jsp 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 <script type="text/javascript"

【AmazeUI】手机版页面的顶部导航条Header与侧边导航栏offCanvas

顶部导航条如果你细心留意下现在的页面,实在是太常见了.这个组件在手机端的页面中,同样可以借助AmazeUI这个前端框架实现.与此同时,可以在导航栏的最右方加一个触发侧边导航栏offCanvas.不要再使用BootStrap那种,一旦点击就大幅度下拉的导航了,反正我个人觉得很蛋疼的.一个导航活活地占据了页面大量位置.这个侧边导航栏offCanvas曾经是php方面的WorkPress的优秀设计来的. 使用AmazeUI做出来的效果如下: 首先是顶部导航栏的代码: <!--这里的顶部导航栏与Boot

导航条 高亮 包含所在列表页和内容页面【转载】

js 高亮显示导航栏代码,通用方式,包括所在内容页 <!--js 高亮显示导航栏代码,通用方式,包括所在内容页--><div id="navmenu">   <ul id="navi">         <li><a href="/">图片首页</a></li>       <li><a href="/qcmn/">清纯

navigationcontroller pop回到隐藏导航条页面出现黑块问题

如果隐藏导航条的页面使用无动画模式隐藏导航条 [self.navigationController setNavigationBarHidden:YES animated:NO];在导航pop回来时就会出现黑块问题. 将隐藏导航条设置为动画模式:[self.navigationController setNavigationBarHidden:YES animated:YES]; 就能解决这个问题.

基于Bootstrap实现下图所示效果的页面,一个白底的带有两个菜单项、一个下拉菜单和一个登录表单的基本导航条

1 <!DOCTYPE html> 2 <html lang="zh-cn"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="widt

ios7状态栏和导航条的一些设置

iOS7的最新版本引入了大量的视觉变化.从开发人员的角度来看,导航栏和状态栏是2个最显而易见的变化.状态栏现在是透明/半透明的,也就是说view 可以透过状态栏,导航栏的背景图像可以向上延伸的状态栏的后面. 默认的导航栏在iOS中7 在我们进去的定制,让我们先来看看由Xcode 5和iOS 7生成的默认导航栏.只需用单-视图-控制器模板的Xcode项目.嵌入视图控制器在导航控制器.如果您不想从头开始,你可以下载这个示例的Xcode项目. Xcode5下面有iOS 6和iOS7两个模拟器.你可以尝

Android 导航条效果实现(六) TabLayout+ViewPager+Fragment

TabLayout 一.继承结构 public class TabLayout extends HorizontalScrollView java.lang.Object ? android.view.View ? android.view.ViewGroup ? android.widget.FrameLayout ? android.widget.HorizontalScrollView ? android.support.design.widget.TabLayout 二.TabLayou

淘宝分类导航条;纯css实现固定导航栏

效果如下: 页面如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style type="t

Bootstrap导航条

前面的话 导航条(navbar)和导航(nav),就相差一个字,多了一个“条”字.其实在Bootstrap框架中他们还是明显的区别.在导航条(navbar)中有一个背景色.而且导航条可以是纯链接(类似导航),也可以是表单,还有就是表单和导航一起结合等多种形式.本文将详细介绍Bootstrap导航条 基础导航条 在Bootstrap框架中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多. 导航条是在应用或网站中作为导航页头的响应式基础组件.它们在移动设备上可以折叠(并且可开