QT5笔记

QT5.0乱码问题

不能用QTextCodec解决乱码问题,需要用QStringLiteral("我是中文")

QML笔记

QML加载自定义控件提示"xxx is not type"

原因: 路径找不到
在main.cpp里把加载主窗口

engine.load(QUrl(QStringLiteral("qrc:qml/main.qml")));

修改成

engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml")));

神奇的事情发生了,这样就可以直接加载qml下面的其他xxx.qml文件了

码流图片实时刷新至QML界面

  • 继承QQuickImageProvider类,并实现requestImage接口

    构造函数调用父类构造函数,设为至Image

    AEScreenImageProvider::AEScreenImageProvider():QQuickImageProvider(QQuickImageProvider::Image){}
    

    实现requestImage接口

    QImage AEScreenImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
    {
        return this->m_img;
    }
    

    m_img是待传到QML界面的图片,该图片由码流转QImage

    传入的参数id 是指image://provider/id里的id,可以自定义值

  • QML文件按如下编写:

    Image {
        id: screenImg
        anchors.centerIn: parent
        width: 1280
        height: 720
        sourceSize.height: 720
        sourceSize.width: 1280
        cache: false
    }
    
    Connections {
        target: aeclient
        onCallQmlRefeshImg: {
            screenImg.source=""
            screenImg.source="image://aecreen"
        }
    }
    

    aeclient是后台解析码流生成QImage类,每解析一帧,发送一个callQmlRefeshImg信号, QML通过onCallQmlRefeshImg接收信号刷新页面

    emit callQmlRefeshImg(); //告诉qml要刷新图片
    

    Image有缓存机制, 通过设置cache为false和screenImg.source="" 进行清空缓存,否则不会刷新下一张图片, cache默认是true

  • 在main里按如下编写:

    AEClient *pClient = new AEClient();
    QQmlApplicationEngine engine;
    engine.rootContext()->setContextProperty("aeclient", pClient);
    engine.addImageProvider(QLatin1String("aecreen"), pClient->imgProvider());
    

    pClient注册到QML的根节点,这样在界面就可以通过aeclient别名进行调用

    aecreen注册到QML里,通过image://aecreen方式调用AEScreenImageProvider

配置使用Material风格界面

  • 方法一:

    在main.cpp里添加如下代码

    if (qgetenv("QT_LABS_CONTROLS_STYLE").isEmpty()){
        qputenv("QT_LABS_CONTROLS_STYLE", "material");
    }
    
  • 方法二:

    在项目根路径创建文件qtquickcontrols2.conf,并把如下内容写到文件:

    ; This file can be edited to change the style of the application
    ; Read "Qt Quick Controls 2 Configuration File" for details:
    ; http://doc.qt.io/qt-5/qtquickcontrols2-configuration.html
    
    [Controls]
    Style=Material
    
    [Material]
    Theme=Dark
    ;Accent=BlueGrey
    ;Primary=BlueGray
    ;Foreground=Brown
    ;Background=Grey
    

    把该文件添加到qrc资源文件里

    在main.cpp里添加如下代码:

    engine.addImportPath("qrc:qtquickcontrols2.conf");
    

Rectangle自适应Layout

  • 当Layout包含了Rectangle时,需要Rect随Layout变化而变化,按如下设计:

    Layout{
      Rectangle {
        Layout.fillWidth: true;
        Layout.fillHeight: true;
      }
    }
    

QT发布依赖dll

​ Qt 提供了打包工具windeployqt, 利用该工具可以很方便的解决qt的依赖问题

​ qt源码编译release后,生成exe文件,找到生成的exe文件(以下以test.exe作为例子),将exe文件拷贝到其他地方。例如: D:/test

​ 通过cd命令道test.exe存放的地方,并输入下面的命令:

windeployqt -qmldir "源码路径" test.exe --release

命令执行完后,在D:/test下将生成qt的依赖文件。 如果你的源码使用了三方库或者生成了动态链接库,那么需要手动将需要的dll文件复制到目录下,实际

​ 运行试试,是不是可以正常运行。

解决遮罩还能点击遮罩层下面控件问题

​ 遮罩层需要处理鼠标点击事件,使不往下再发送事件信号

Rectangle {
   id: progress
    anchors.fill: parent
    color: "#00000000"
    z: 99
    visible: false
    Rectangle {
        anchors.fill: parent
        opacity: 0.5
        color: "white"
    }

    Column {
        anchors.fill: parent
        //anchors.centerIn: parent
        spacing: 20
        Text {
            text: "正在计算目录: E:/a/b/..."
            color: "white"
            font.pixelSize: 20
            anchors.centerIn: parent
        }
        ProgressBar {
            indeterminate: true
            focusPolicy: Qt.NoFocus
            anchors.centerIn: parent
        }
    }
    MouseArea{
        anchors.fill: parent;
        onPressed:{
             mouse.accepted = true
        }
        drag.target: window  // root可拖动
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容

  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,412评论 2 45
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    wgl0419阅读 6,267评论 1 9
  • 月光潋潋卓如华 我在树下歌桃花 山月尚知心中事 远方的人儿啊 何时才能与我共话长 雁且振翅向南飞 我留北疆心憔悴 ...
    伊时阅读 207评论 1 0
  • 六月中旬,老公要到某地疗养,且可以带家属,我自然夫唱妇随。在疗养院里,每餐都是自助,伙食非常不错。 心情好...
    桔菊阅读 596评论 0 2
  • 1,从本篇文章/音频/视频中我学到的最重要的概念:每个人心里都有一片善良,在,遇到困难的时候,会有陌生之人相助。这...
    李晓桐123456阅读 240评论 2 0