我目前正在使用嵌入式Linux(ARM Cortex A9)上的Qt 5.0.2开发一个项目。
主要的UI界面是用QML开发的,但是我需要能够隐藏这个视图以直接用C ++显示QWebView。
我在c ++中编写了一个简单的视图控制器,它隐藏了()/ show()QML视图和QWebView的许多实例。
隐藏/显示方法工作正常但是当我显示QML视图时,它非常不稳定。 QML对象是可见的(或不可见:p),当它们不应该,并且焦点也是错误的。对象也被绘制在错误的位置。
我尝试了几种方法:
- 每次显示QML视图时,都会初始化不同对象的焦点/可见属性。
- 每次显示视图前都使用.setSource()
- 在显示视图之前,感谢rootObject()更新()不同对象。
在切换到c ++视图后,是否有人提示让QML视图再次功能化?
感谢。
答案 0 :(得分:0)
可能有更好的方法,但是,
你可能会做这样的事情(我没有测试过这个):
注意:如果插槽实现错误(数学错误),将导致无限递归。
//this code could probably be in the constructor
real widthOverHeightRatio = 2;//set this value to what you want, or what it is when user first presses shift depending on the use case.
QObject::connect(this, SIGNAL(widthChange()), this, SLOT(onWidthChanged()));
QObject::connect(this, SIGNAL(heightChanged()), this, SLOT(onHeightChanged()));
//don't forget to define these slots in the header
//implemented slots
void MyClass::onWidthChanged()
{
if(width/height!=widthOverHeightRatio){
height = width/widthOverHeightRatio;
}
}
void MyClass::onHeightChanged()
{
if(width/height!=widthOverHeightRatio){
width = height*widthOverHeightRatio;
}
}