我在QML中设计了一个布局,以了解有关其功能的更多信息,并在设计此类布局时对"最佳实践"有一些疑问.这里是:
它本质上是一个由三个RowLayout组成的ColumnLayout,每个RowLayout都有一些Rectangle s.应计算每个Row和Rectangle的大小,例如:
我想出的QML正在发挥作用,如下所示.我有一些问题:
这是我的布局QML代码:
ApplicationWindow {
x: 500
y: 100
width: 250
height: 150
visible: true
ColumnLayout {
anchors.fill: parent
spacing: 0
RowLayout {
spacing: 0
Layout.preferredHeight: 0.4*parent.height
Layout.fillHeight: false
Rectangle {
Layout.fillHeight: true
Layout.fillWidth: true
color: "red" …
Run Code Online (Sandbox Code Playgroud) 注意:我想避免在javascript代码中修改模型,并在Blender中进行所有模型设计.
注意#2:虽然这个问题很长,但它实际上是一个基本问题(标题说明了一切).以下是问题的"演练".
我正在尝试将Blender模型导出为threejs.org作为DAE模型,但是对于具有纹理的模型有问题(我也尝试过JSON和OBJ + MTL格式):
为了简化操作,下面是我执行(并且失败)将纹理添加到包含立方体,相机和灯光的简单"启动文件"的步骤:
您可以下载这些步骤中提到的混合,dae和纹理文件.
然后我使用以下代码加载DAE模型,但是我收到此错误并且未显示多维数据集:
256 [.WebGLRenderingContext] GL错误:GL_INVALID_OPERATION:glDrawElements:尝试访问属性2 WebGL中超出范围的顶点:错误太多,不会再向控制台报告此上下文的错误.
<script src="js/three.min.js"></script>
<script src="js/OrbitControls.js"></script>
<script src="js/ColladaLoader.js"></script>
<script>
var scene, camera, renderer;
init();
animate();
function init() {
scene = new THREE.Scene();
var WIDTH = window.innerWidth,
HEIGHT = window.innerHeight;
renderer = new THREE.WebGLRenderer({antialias:true});
renderer.setSize(WIDTH, HEIGHT);
document.body.appendChild(renderer.domElement);
camera = new THREE.PerspectiveCamera(45, …
Run Code Online (Sandbox Code Playgroud) 我正在实现一个简单的HTTP客户端,它只连接到Web服务器并获取其默认主页.在这里,它很好用:
using System;
using System.Net.Sockets;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
TcpClient tc = new TcpClient();
tc.Connect("www.google.com", 80);
using (NetworkStream ns = tc.GetStream())
{
System.IO.StreamWriter sw = new System.IO.StreamWriter(ns);
System.IO.StreamReader sr = new System.IO.StreamReader(ns);
string req = "";
req += "GET / HTTP/1.0\r\n";
req += "Host: www.google.com\r\n";
req += "\r\n";
sw.Write(req);
sw.Flush();
Console.WriteLine("[reading...]");
Console.WriteLine(sr.ReadToEnd());
}
tc.Close();
Console.WriteLine("[done!]");
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我从上面的代码中删除下面的行时,程序会在sr.ReadToEnd上阻塞.
req += "Host: www.google.com\r\n";
Run Code Online (Sandbox Code Playgroud)
我甚至用sr.Read替换了 …
我遇到过很多有%#ok<SAGROW>
评论的MATLAB代码.这个评论用于不同的情况,我无法弄清楚它的含义.
举个例子:
i = 1;
flag = true;
for l = 1:k
while(flag==true)
if(probs(i)~=0)
leaves(l).val = i-1; %#ok<*SAGROW>
leaves(l).zero = '';
leaves(l).one = '';
leaves(l).prob = probs(i);
i = i + 1;
flag = false;
else
i = i+1;
flag = true;
end
end
flag =true;
end
Run Code Online (Sandbox Code Playgroud)
对于这个评论还有其他参考,对于instace:
我试图用Delphi中的TImage组件打开一些JPEG文件.我还添加了Jpeg单元.我可以打开大多数jpg文件,没有问题.
但是当我尝试打开一些JPG时,该程序只是抛出异常.
我也尝试在设计模式下加载图像,但是有一些问题.在设计模式中,例外是:
模块'vcljpeg70.bpl'中地址402672A1的访问冲突.写地址08E84000
为什么我无法打开那个JPG?他们没有腐败.我在savantools EXIF查看器等一些工具中检查了它们.
这是其中一张图片的网址:http: //xs842.xs.to/xs842/09340/backpic435.jpg
非常感谢
PS:我的Delphi版本是7. Borland Delphi 7
在下面的QML中,唯一的动态部分是闪烁的矩形.虽然它与生成的项目无关,但闪烁的矩形会导致负载过重并降低系统速度(例如,我使用的i.MX6处理器上的CPU负载为100%),即使它与其他设备之间没有重叠/绑定项目.删除中继器解决了问题,矩形平滑闪烁.
import QtQuick 2.3
Rectangle {
id: root
anchors.fill: parent
Repeater {
model: 10000
delegate: Rectangle {
width: 5
height: 5
x: (index % 200)*6
y: 50 + Math.floor(index / 200)*6
color: "blue"
border.color: "black"
}
}
Rectangle {
property bool blinker: false
width: 20
height: 20
color: blinker ? "green" : "red"
Timer {
running: true
interval: 100
repeat: true
onTriggered: { parent.blinker = !parent.blinker }
}
}
}
Run Code Online (Sandbox Code Playgroud)
model: 10000
如果您具有更好的规格并且没有经历减速,则可能需要将Repeater 的参数设置为更高的值.代码在Qt 5.3.2和Qt 5.5.0上进行了测试,两者都存在问题.
在我的实际应用程序中,我的模型数量较少(~100),但委托更复杂.因此,CPU(GPU?)的使用取决于代理的复杂性+ Repeater中的模型项的数量.
为什么由Repeater生成的大量项目(或复杂项目)会影响应用程序的性能,而它们与其他动态对象没有关系/重叠? …
在这里,我将通过一个例子来解释这个问题.最初的问题更抽象地提出了问题.不需要阅读它.
让我们说我们已经实现了这个buggy函数来找到int []的min:
public int MyMin(int[] data)
{
int min = 1000;
for (int i = 1; i < data.Length; i++)
{
if (data[i] < min)
{
min = data[i];
}
}
return min;
}
Run Code Online (Sandbox Code Playgroud)
在这个函数上运行Intellitest给我们:
注意,对于测试#4和#6,该函数由于其错误实现而未正确计算最小值.但是,这些测试正在通过,这是不希望的.
Intellitest不能神奇地确定我们的预期行为,MyMin
并使测试失败.但是,如果我们可以手动指定这些测试的所需结果,那将是非常好的.
@michał-komorowski的解决方案是可行的,但对于每个测试用例,我必须重复其输入的PexAssume
s.是否有更加优雅/干净的方式来为测试输入指定所需的输出?
Intelitest生成可修改的参数化测试,并可在其中添加通用/全局断言.它还生成最大数量的输入,以最大化代码覆盖率.Intellitest将输入存储为单独的单元测试,每个测试都使用精心设计的输入调用参数化测试.
我正在寻找一种方法来为每个输入添加断言.
由于每个输入都作为单元测试函数存储在.g.cs文件中,因此可以在那里添加断言.问题是这些功能不应由用户自定义,因为它们将在后续运行中被Intellitest覆盖.
为每个单元测试添加断言的推荐方法是什么?
我想设计一个用户应填写某些字段的webform.应从客户端计算机的串行端口(COM1)读取一个字段的值,该端口连接有特殊硬件,用户Send to PC
在填写表单时按下硬件的键.
我如何COM1
在我的网页上收听端口并获取COM1的值并自动将其放入网络表单中?
我听说ActiveX控件可以做到这一点,但它只与IE兼容(对吧?).另一个选项是Java applet.
我想要一个与(至少)IE/Firefox/Opera兼容的简单解决方案.
我服务器端我可以有ASP或PHP但我很感激,如果你给每个人的解决方案.
更新:
我们可以告诉客户更改其安全设置以接受我们的ActiveX/applet.
我们也可以告诉客户端安装自定义程序,该程序作为服务运行并从串行端口读取.
问题是读取的数据应该立即自动输入到webform.
java applet是一个好主意,但客户端必须安装大小的JRE.
还有其他选择吗?
我正在寻找一个公式/算法来计算给定精度的PI~3.14.
公式/算法必须只有非常基本的算术
因为我想用C++实现这些操作,并希望尽可能简化实现(不允许使用bignum库).
我发现这个计算Pi的公式非常简单:
Pi/4 = 1 - 1/3 + 1/5 - 1/7 + ... = sum( (-1)^(k+1)/(2*k-1) , k=1..inf )
Run Code Online (Sandbox Code Playgroud)
(注意,(-1)^(k + 1)可以由上述运算符容易地实现).
但是这个公式的问题是无法指定要计算的位数.换句话说,没有直接的方法来确定何时停止计算.
也许这个问题的解决方法是计算n-1
th和n
th计算的术语之间的差异,并将其视为当前错误.
无论如何,我正在寻找具有这些属性的公式/算法,并且还能更快地收敛到Pi
此外,QMetaObject::invokeMethod
是否有任何类型安全的方式来异步调用方法/槽(又名在 GUI 线程中对其执行进行排队)?
没有QMetaObject::invokeMethod
编译时检查函数名称。通过字符串指定成员函数也会产生开销,因为每次调用都会执行查找和字符串匹配。
我想知道是否有类似于QObject::connect
调用提供编译时检查的方法的新语法的内容。
一种解决方案是使用信号槽架构,但这强制将每个调用者代码包装在 QObject 类中,以便能够发出该信号。
qt ×3
qml ×2
.net ×1
algorithm ×1
assertions ×1
blender ×1
client-side ×1
comments ×1
compile-time ×1
delphi ×1
export ×1
fluid-layout ×1
hardware ×1
httpclient ×1
intellitest ×1
jpeg ×1
layout ×1
math ×1
matlab ×1
performance ×1
pi ×1
qtcore ×1
qtquick2 ×1
serial-port ×1
tcp ×1
telnet ×1
textures ×1
three.js ×1
type-safety ×1
unit-testing ×1
webgl ×1
webserver ×1