讨论Qt制作小程序样式(Hybrid风格)的可能性



  • post_cover
    Qt是完全有能力做到Hybrid风格的应用的。由于Qt Quick不断完善,并且整合的框架也在增多,我们能够在上层做的事情也会变多。这对我们来说是一个大的利好。我们一定要把握机会!

    如果说制作Qt小程序风格,那么我们需要具备哪些呢?这里我们开一个帖子,大家讨论一下,可能周末的聚会也会做相关的讨论总结呢。



  • 我先提一下,最近@qyvlik 提出了有可能技术上让SQLite加密的数据作为QML模块LocalStorage的数据源。这样的话,我们可以做到数据隔离,并且防止本地数据外泄。



  • 接着就是Hybrid程序,要移除QML中Qt.quit( )QCoreApplication::quit( )的连接。这样可以防止小程序破坏性地进行退出操作。



  • @jiangcaiyang123 主要是小程序的启动方式,是以一个单独的进程启动,还是在一个类似 qmlscene 的程序中以多窗体的模式启动。

    小程序是服务于一个主要的主程序,例如这个主程序是萌梦,那么萌梦是否有小程序的需求?



  • @jiangcaiyang123 或者我们换个想法,我们制作一个 QML 程序的小商店,大家可以在这里发布自己的 QML 小程序(纯QML制作),然后我们编写一个 QML 小程序的启动器,类似于 qmlscene,但是比 qmlscene 更强大。

    如果是QML 程序的小商店,那么如何审核QML 小程序呢?

    PS:小程序严格来说是应用,应该要有审核的机制,以及发布的渠道——商店。



  • @jiangcaiyang123 类似于 npm,有一个 Qt 的 qpm 包管理器,如果我们要开发 Qt 小程序的话,那么编写一个 Qt 启动器尤为重要,例如这个 Qt 启动器要处理被启动程序的依赖问题。

    例如 诺基亚 N9 的Qt程序是通过一个叫 invoker 的程序启动的,如下:

    AcFun_harmattan.desktop

    [Desktop Entry]
    Encoding=UTF-8
    Version=1.0
    Type=Application
    Terminal=false
    Name=AcFun
    Exec=/usr/bin/invoker --splash /opt/AcFun/bin/splash_n9.png --type=d -s /opt/AcFun/bin/AcFun
    Icon=/usr/share/icons/hicolor/80x80/apps/AcFun80.png
    X-Window-Icon=
    X-HildonDesk-ShowInToolbar=true
    X-Osso-Type=application/x-executable
    

    在启动过程中,可以做一些依赖检查,以及小程序的初始化操作。



  • @qyvlik 这个好



  • @qyvlik 这也是一个很棒的点子哦。我们以后可以合作,把小程序做得更好更棒。我们还要有一个具体的行业选择最好,单单是小程序,还不够呢,需要一些吸引人的东西过来才行啊。


 

走马观花

最近的回复

  • @bladesero Blender 在角色建模和渲染这些方面的确比较强。😄

    我们的软件还在发展中呢。
    18da2116-2055-47c1-8317-1ccde17dfcc0-image.png

    阅读更多
  • untitled.jpg figure角色(WIP2).jpg
    TIM截图20190117184210.png
    使用的软件是blender,zbrush和substance painter

    阅读更多
  • 背景:如果需要qml显示循环list,一般是用3个ListView循环交替,实现伪循环,期间逻辑复杂,容易出错,PathView本身自带循环,所以考虑用PathView实现循环

    设计:PathView显示5条数据,按照垂直List一个个排好顺序,由于收尾移动时候会空白穿帮,所以用clip控制显示中间三条数据

    滚动控制:currentIndex,decrementCurrentIndex(),incrementCurrentIndex()

    代码:

    Item{ id: item1 property int myIndex: 0 property int onePageCount: 3 property real oneHeight: 72 property real oneWidth: 580 property int isCurrentListView: 1 //0,1,2 property bool isAdd: true //direction,down=true,up=false property int hightlightIndex: 0 property int currentIndexPathView: 0 //use this Item{ id: itemClip width: item1.oneWidth height: item1.oneHeight*3 clip: true PathView { id: listView1 width: item1.oneWidth model: listModelSpeedWarning delegate: delegeteLine pathItemCount: item1.onePageCount+2 interactive: false path: Path { startX: item1.oneWidth/2 startY: -item1.oneHeight/2 PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*0+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*0+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*1+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*1+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*2+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*2+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*3+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*3+item1.oneHeight/2 } PathQuad { x: item1.oneWidth/2; y: item1.oneHeight*4+item1.oneHeight/2; controlX: item1.oneWidth/2; controlY: item1.oneHeight*4+item1.oneHeight/2 } } Component.onCompleted: { listView1.currentIndex = -1 } } } }

    问题:windows下测试,按住按键不松手,list滚动会卡住,松手后恢复正常,看来list不能滚动太快

    阅读更多
  • H

    @青山白云 只是为了替换GIF,不过目前已经解决加载问题

    阅读更多

关注我们

微博
QQ群











召唤伊斯特瓦尔