小编Isa*_*aac的帖子

如何在QML中设计多级流体布局

我在QML中设计了一个布局,以了解有关其功能的更多信息,并在设计此类布局时对"最佳实践"有一些疑问.这里是:

在此输入图像描述

它本质上是一个由三个RowLayout组成的ColumnLayout,每个RowLayout都有一些Rectangle s.应计算每个Row和Rectangle的大小,例如:

  • 第一行:高度= 40%,宽度= 100%
    • 红色矩形填充整个区域
  • 第二行:高度= 20%,宽度= 100%
    • 深绿色矩形:高度= 100%,宽度= 20%,
    • 浅绿色矩形:高度= 100%,宽度= 80%
  • 第三排:高度= 40%,宽度= 100%
    • 深蓝色矩形:高度= 100%,宽度= 40%,
    • 蓝色矩形:高度= 100%,宽度= 20%
    • 浅蓝色矩形:高度= 100%,宽度= 40%

我想出的QML正在发挥作用,如下所示.我有一些问题:

  1. 我使用Layout.preferredHeight:x*parent.height模式设置了宽度和高度百分比.其他选项导致一些问题(例如preferredHeight导致绑定循环警告).我的方法是正确有效的吗?
  2. 作为一个黑客,我为第2行和第3行的第一个元素设置了Layout.fillWidth:true,这对我来说没有意义,但确实有效.如果我将它们的宽度设置为百分比(例如Layout.preferredWidth:0.2*parent.width),它们的行将折叠为宽度0.这是预期的行为吗?有没有更好的解决方法?
  3. 你有关于布局的任何建议吗?我在正确的道路上吗?

这是我的布局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)

layout qt fluid-layout qml

12
推荐指数
3
解决办法
6119
查看次数

将纹理从Blender导出到three.js的简单模型

注意:我想避免在javascript代码中修改模型,并在Blender中进行所有模型设计.

注意#2:虽然这个问题很长,但它实际上是一个基本问题(标题说明了一切).以下是问题的"演练".

我正在尝试将Blender模型导出为threejs.org作为DAE模型,但是对于具有纹理的模型有问题(我也尝试过JSON和OBJ + MTL格式):

为了简化操作,下面是我执行(并且失败)将纹理添加到包含立方体,相机和灯光的简单"启动文件"的步骤:

  1. 选择多维数据集
  2. 在" 材质"面板中,确保选中多维数据集的默认材质.
  3. 在" 纹理"面板中,确保选中"Tex"(材质的默认纹理).
  4. 对于此纹理,将" 类型 " 设置为"图像或电影"
  5. 在面板的" 图像"部分中,打开grass1.jpg(512x512图像)作为纹理.
  6. 在" 映射"部分中,将" 坐标"更改为"UV".
  7. 将模型导出为Collada模型,选中"包含UV纹理","包含材质纹理"和"复制"复选框.

您可以下载这些步骤中提到的混合,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)

textures export blender webgl three.js

11
推荐指数
1
解决办法
1万
查看次数

真的很奇怪在C#中使用TcpClient的HTTP客户端

我正在实现一个简单的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替换了 …

.net webserver tcp telnet httpclient

8
推荐指数
1
解决办法
1万
查看次数

在MATLAB中%#ok <SAGROW>注释意味着什么?

我遇到过很多有%#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:

matlab comments

8
推荐指数
2
解决办法
7810
查看次数

在Delphi中显示一些JPG文件的问题

我试图用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

delphi jpeg

7
推荐指数
2
解决办法
4088
查看次数

在存在许多非重叠项目的情况下更新项目时的QML性能问题

在下面的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生成的大量项目(或复杂项目)会影响应用程序的性能,而它们与其他动态对象没有关系/重叠? …

performance qt qml qtquick2

6
推荐指数
1
解决办法
1841
查看次数

Intellitest为每个生成的测试添加断言的位置

在这里,我将通过一个例子来解释这个问题.最初的问题更抽象地提出了问题.不需要阅读它.

更新:问题为例

让我们说我们已经实现了这个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的解决方案是可行的,但对于每个测试用例,我必须重复其输入的PexAssumes.是否有更加优雅/干净的方式来为测试输入指定所需的输出?

原始问题

Intelitest生成可修改的参数化测试,并可在其中添加通用/全局断言.它还生成最大数量的输入,以最大化代码覆盖率.Intellitest将输入存储为单独的单元测试,每个测试都使用精心设计的输入调用参数化测试.

我正在寻找一种方法来为每个输入添加断言.

由于每个输入都作为单元测试函数存储在.g.cs文件中,因此可以在那里添加断言.问题是这些功能不应由用户自定义,因为它们将在后续运行中被Intellitest覆盖.

为每个单元测试添加断言的推荐方法是什么?

unit-testing assertions visual-studio-2015 intellitest

6
推荐指数
1
解决办法
744
查看次数

如何从网页中的串口读取

我想设计一个用户应填写某些字段的webform.应从客户端计算机的串行端口(COM1)读取一个字段的值,该端口连接有特殊硬件,用户Send to PC在填写表单时按下硬件的键.

我如何COM1在我的网页上收听端口并获取COM1的值并自动将其放入网络表单中?

我听说ActiveX控件可以做到这一点,但它只与IE兼容(对吧?).另一个选项是Java applet.

我想要一个与(至少)IE/Firefox/Opera兼容的简单解决方案.

我服务器端我可以有ASP或PHP但我很感激,如果你给每个人的解决方案.

更新:

我们可以告诉客户更改其安全设置以接受我们的ActiveX/applet.

我们也可以告诉客户端安装自定义程序,该程序作为服务运行并从串行端口读取.

问题是读取的数据应该立即自动输入到webform.

java applet是一个好主意,但客户端必须安装大小的JRE.

还有其他选择吗?

hardware serial-port client-side

5
推荐指数
1
解决办法
2万
查看次数

使用基本算术来计算具有任意精度的Pi

我正在寻找一个公式/算法来计算给定精度的PI~3.14.

公式/算法必须只有非常基本的算术

  • +:加法
  • - :减法
  • *:乘法
  • /:Divison

因为我想用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-1th和nth计算的术语之间的差异,并将其视为当前错误.

无论如何,我正在寻找具有这些属性的公式/算法,并且还能更快地收敛到Pi

algorithm math pi

5
推荐指数
2
解决办法
9335
查看次数

带有编译时检查的 QMetaObject::invokeMethod 替代方案

此外,QMetaObject::invokeMethod是否有任何类型安全的方式来异步调用方法/槽(又名在 GUI 线程中对其执行进行排队)?

没有QMetaObject::invokeMethod编译时检查函数名称。通过字符串指定成员函数也会产生开销,因为每次调用都会执行查找和字符串匹配。

我想知道是否有类似于QObject::connect调用提供编译时检查的方法的新语法的内容。

一种解决方案是使用信号槽架构,但这强制将每个调用者代码包装在 QObject 类中,以便能够发出该信号。

qt signals-slots compile-time type-safety qtcore

5
推荐指数
1
解决办法
1155
查看次数