我在Fedora 23上使用Qt 5.6,我注意到console.log()并且console.debug()没有向控制台写任何东西.我的示例代码:
import QtQuick 2.6
import QtQuick.Window 2.2
Window {
visible: true
Text {
text: qsTr("Hello World")
anchors.centerIn: parent
Component.onCompleted: {
console.warn("warn completed")
console.log("log completed")
console.error("error completed")
console.debug("debug completed")
console.exception("exception completed")
console.info("info completed")
}
}
}
Run Code Online (Sandbox Code Playgroud)
打印到控制台:
QML debugging is enabled. Only use this in a safe environment.
qml: warn completed
qml: error completed
qml: exception completed
onCompleted (qrc:/main.qml:16)
qml: info completed
Run Code Online (Sandbox Code Playgroud)
所以warn,error,exception,和info做工精细.我究竟做错了什么?
编辑#1:项目是新创建的,我的所有来源:
main.cpp中
#include <QGuiApplication> …Run Code Online (Sandbox Code Playgroud) 有两个负责两个不同职责的MouseArea,一个(绿色)部分位于另一个(红色)上方。每当悬停红色 MA(即使它在绿色 MA下)时,我都想更改光标的形状,并且我希望绿色 MA对按下做出反应,而没有其他事情。
两个MA可能位于不同的文件中,所以我不想在它们之间建立明确的依赖关系,例如,每当红色更改containsMouse时,就将绿色设置为正确的cursorShape 。有没有办法防止绿色的 MouseArea处理光标形状?
import QtQuick 2.4
import QtQuick.Window 2.2
Window {
visible: true
width: 200
height: 200
Rectangle { anchors.fill: parent; color: "yellow"; }
MouseArea {
width: 150
height: 150
hoverEnabled: true
cursorShape: Qt.OpenHandCursor
Rectangle { anchors.fill: parent; color: "red"; }
onPositionChanged: console.log("position", mouse.x, mouse.y)
onContainsMouseChanged: console.log("containsMouse", containsMouse)
}
MouseArea {
x: 50
y: 50
width: 150
height: 150
hoverEnabled: false
Rectangle { anchors.fill: …Run Code Online (Sandbox Code Playgroud) 我想加载cube.obj引用多个cube_*.mtl文件的文件,后者又使用纹理图像*.png(所有资源).加载多个mtl而不是一个mtl的原因是能够动态加载具有相同几何但不同材质的对象.
我找不到这样的例子所以我试图通过加载所有mtl,创建和加载obj 来混合MultiMaterial中的示例(不再受threejs支持)文档和webgl_loader_obj_mtlMultiMaterial:
var resources = 'cube/';
var materialsToLoad = [
'cube_red.mtl',
'cube_green.mtl',
'cube_blue.mtl'
];
var loadedMaterials = [];
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath(resources);
for (var i = 0; i < materialsToLoad.length; i++) {
mtlLoader.load(materialsToLoad[i], function(materials) {
materials.preload();
loadedMaterials.push(materials);
});
}
var multi = new THREE.MultiMaterial(loadedMaterials);
var objLoader = new THREE.OBJLoader();
objLoader.setPath(resources);
objLoader.setMaterials(multi); // #1
objLoader.load('cube.obj', function (object) {
scene.add(object);
});
Run Code Online (Sandbox Code Playgroud)
但这不起作用,抛出异常:
Uncaught TypeError: …Run Code Online (Sandbox Code Playgroud)