QML之View

今天学习QML的ListView,GridView,PathView,WebView等.

1、ListView

       ListView用来显示ListModel,XMLListModel或者自定义model的数据。

       ListView继承自Flickable,包含一个需要显示的model即数据模型,一个显示规格的delegate即代理。

       新建一个ContactModel.qml,这就是一个model。

      

       新建一个view.qml

     

 

 

        highlight设置高亮条.keyNavigationWraps设置达是否到最后一项后返回第一项,focus设置是否能响应键盘事件

        orientation:设置横向或者纵向显示,默认为ListView.Vertical

         Component.onCompleted:positionViewAtIndex(count-1,ListView.Beginning)设置默认显示在哪一项

        由于它继承自Flipable,运行界面像手机界面的触摸滑动,哈哈.

 2、GridView

       GridView和ListView相似,只是显示方式不同.

      

 

3、PathView

      PathView也类似于ListView,需要model和delegate,但是它的显示方式是沿着我们规定的path(路径)显示.

 

 

 

 

4、Path,PathAttribute,PathPercent,PathLine,PathQuad,PathCubic

      Path由一个或多个如Pathine,PathQuad,PathCubic等路径段组成。主要应用在PathView中.

      PathAttribute能够在Path上某个位置设置一个属性.

      PathPercent

      PathLine 定义一条直线

      PathQuad定义二次贝塞尔曲线

      PathcuBic定义三次贝塞尔曲线

 

5、WebView

      WebView用于显示网页,刚查了下Meego API,此组件在Qt WebKit模块中,所以还是放到以后学Qt WebKit时学。

      

      

 

      Meego API地址: http://apidocs.meego.com/1.1/core/html/index.html

### 使用 `QGraphicsView` 和 QML 的集成方法 为了在 QML 中利用 `QGraphicsView` 功能,通常会通过创建自定义的 C++ 类来桥接这两种技术。具体来说,可以继承 `QQuickItem` 或者 `QQuickPaintedItem` 并在其内部嵌入 `QGraphicsView` 实现所需功能[^1]。 对于希望直接操作图形项的应用程序而言,在 C++ 端设置好场景 (`QGraphicsScene`) 后,可以通过暴露该场景给 QML 来实现交互。这涉及到注册类型以便于 QML 可访问以及信号槽机制用于事件处理。 另外一种方式是采用混合模式开发——即主要界面由 QML 构建而特定部分(如复杂的绘图区域)则交给基于 `QWidget` 的组件完成,此时就可以考虑使用 `QGraphicsView` 作为此类部件的一部分。 当遇到性能瓶颈或者其他与 `QGraphicsView` 相关的技术难题时,建议检查以下几点: - 场景中的项目数量是否过多; - 是否存在不必要的更新调用影响效率; - 渲染选项配置不当可能导致速度下降等问题; 针对上述情况可采取相应措施优化应用表现,比如批量管理对象、减少重绘次数或是调整视图属性等手段提升整体流畅度。 ```cpp // Example of exposing a QGraphicsView-based widget to QML through a custom type. class GraphicsViewItem : public QQuickPaintedItem { Q_OBJECT public: explicit GraphicsViewItem(QQuickItem *parent = nullptr); protected: void paint(QPainter *painter) override; private: QGraphicsView* m_view; // The embedded graphics view }; ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值