QT_QML_常见问题

1. qml文件中,如果要添加信号连接,如果与控件x有丁点关联,则将Connections{}最好放到该控件的{}内部,不这样做曾经遇到接受不到信号的奇葩问题。

2. 使用TabView时,在每个Tab内部最好在最上层加一个Rectangle,否则有时候显示不出来。

3. 从c++中向qml传递信号时,如果emit 信号很频繁,可能会导致在一些机器上出现界面跳转不正常的现象,例子:

c++发送信号,连着发送六个:

(.h中信号的定义: void sigPoseChanged(int index,float param); )

            emit sigChanged(0,param0);
            emit sigChanged(1,param1);
            emit sigChanged(2,param2);
            emit sigChanged(3,param3);
            emit sigChanged(4,param4);
            emit sigChanged(5,param5);


qml中接受信号:

Connections
                        {
                            target: qml_ctrl //object of class UmProg
                            onSigPoseChanged:{
                                    
                                    switch(index)
                                    {
                                        case 0:
                                            xx0.text = param
                                            xx0.update()
                                            break
                                        case 1:
                                            xx1.text =param
                                            xx1.update()
                                            break
                                        case 2:
                                            xx2.text = param
                                            xx2.update()
                                            break
                                        case 3:
                                            xx3.text = param
                                            xx3.update()
                                            break
                                        case 4:
                                            xx4.text = param
                                            xx4.update()
                                            break
                                        case 5:
                                            xx5.text = param
                                            xx5.update()
                                            break
                                       default:break
                                    }
                                
                            }
                        }//connections

改成发送一个信号,一个信号中包括6个变量,界面就ok了:

void sigPoseChanged(float param1,float param2,float param3,float param4,float param5,float param6);


posted @ 2018-04-25 15:51  JadeCicada  阅读(172)  评论(0编辑  收藏  举报