小编dte*_*ech的帖子

Java方法调用比C++中的虚方法调用更快?

在维基百科中偶然发现了这个:

由于C++的额外虚拟表查找,Java可以比C++访问派生的虚方法更快地访问派生实例方法.但是,C++中的非虚方法不会受到V-Table性能瓶颈的影响,因此表现出与Java类似的性能.

它是否正确?据我所知,ALL调用在Java中是虚拟的,仍然依赖于虚拟表,因此我的常见逻辑表明Java调用不可能比虚拟C++调用更快.

我是误导还是文章错了?无论如何 - 在运行时解析调用的方法是否比虚拟表更快?

c++ java performance virtual call

4
推荐指数
1
解决办法
668
查看次数

QML对象的动态实例化?

我想在QML中绘制许多Rectangular.Rectangulars(x,y)的坐标将在C++中计算,需要传递给QML.

我试图寻找的ListView或列或行元素(带中继器),但是这似乎不解决问题,因为元件排列像"表" ...我遇到的信息缺乏对网络上的例子这种情况.

更具体一点:
1.如何将我的Rectangular的许多坐标传递给QML?(什么数据结构)
2.我应该使用什么机制来显示它们?

qt qml

4
推荐指数
1
解决办法
7325
查看次数

Qt 画一个带孔的圆环/圆

我需要用 QPainter 画一个圆圈。当我使用 drawEllipse 函数时:

void UserClass::Draw(QPainter &painter) {

    painter.save();
    painter.setBrush( GetColor() );
    QPoint centerPosition = GetCenterPosition();
    painter.drawEllipse( centerPosition, m_CircleOuterRadius, m_CircleOuterRadius);
    painter.setBrush(QColor(0, 0, 0, 0));
    painter.drawEllipse( centerPosition, m_CircleInnerRadius, m_CircleInnerRadius);
    painter.restore();  
}
Run Code Online (Sandbox Code Playgroud)

不幸的是结果不是我想要的。我想让内圈不被填满。这就是为什么我将 alpha 值设置为零,但当然它不起作用。我怎么能有一个圆,直到 qt 达到某个半径?

在此处输入图片说明

c++ qt qpainter

4
推荐指数
1
解决办法
2980
查看次数

应用镜像变换来翻转/反射 QML 控件

我可以在 QML 中水平翻转/反射形状项目吗?例如; 我有以下形状:

在此输入图像描述

我可以水平翻转/反射它以产生:

在此输入图像描述

我知道我可以编辑 QML 代码来以不同的方式绘制线条,但如果可能的话,仅使用 QML 动画或翻转它的东西会简单得多。

Shape {
    id: annotationHLine;
    anchors.left: annotationShp.right;
    anchors.top: annotationShp.top;
    anchors.topMargin: annotationShp.height * 0.5;

    ShapePath {
        strokeWidth: 2;
        strokeColor: "Green";
        fillColor: "transparent";
        startX: -slant; startY: 0;
        PathLine { x: relativeTargetX*0.5; y: 0 }
        PathLine { x: relativeTargetX; y: relativeTargetY }
    }
}
Run Code Online (Sandbox Code Playgroud)

qt qml qtquickcontrols2

4
推荐指数
1
解决办法
5389
查看次数

使用升压模块而没有其余的升压?

我希望在我正在开发的小型教育框架中包含增强信号,但我不想添加所有内容,因为增强功能非常大,我需要的是线程,信号1和2以及asio.

我的问题是,由于没有完整的升级库,我可能会遇到任何依赖关系或许可问题?

c++ multithreading boost boost-asio boost-signals

3
推荐指数
1
解决办法
143
查看次数

Qt QPixmap大小

我想要一个QPixmap50 x 50的尺寸.我试过:

QPixmap watermark(QSize(50,50)); 
watermark.load(":/icoMenu/preparation");
Run Code Online (Sandbox Code Playgroud)

但QPixmap采用图像大小.

我也尝试过:

QPixmap watermark(":/icoMenu/preparation");
watermark.scaled(QSize(50,50),  Qt::KeepAspectRatio);
Run Code Online (Sandbox Code Playgroud)

但结果相同.

qt qpixmap

3
推荐指数
1
解决办法
8643
查看次数

QML和C++图像互操作性

我查看了文档以及我在互联网上可以找到的任何内容,但似乎不可能从C++访问QML图像.

有办法解决这个问题吗?

c++ qt image qml qtquick2

3
推荐指数
1
解决办法
2637
查看次数

Qt - 用于碰撞检测的圆圈

我一直在用Qt中的圆圈进行物理模拟.到目前为止,我发现定义圆的最简单方法是制作一个QRect对象,然后用该矩形绘制椭圆作为"蓝图".现在我遇到的问题是它画了一个圆圈,但是命中检测的命中框仍然是一个正方形,看起来很尴尬.到目前为止,我还没能找到解决方案,希望能在这里找到一些帮助.

QRectF Ball::boundingRect() const
{    
  return QRect(0,0,20,20);
}
void Ball::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    QRectF rec = boundingRect();
    QBrush Brush(Qt::gray);

    //basic Collision Detection

    if(scene()->collidingItems(this).isEmpty())
    {
        //no collision
        Brush.setColor(Qt::green);
    }
    else
    {
        //collision!!!!!
        Brush.setColor(Qt::red);

        //Set position
        DoCollision();
    }

    //painter->fillEllipse(rec,Brush);
    painter->drawEllipse(rec);
}
Run Code Online (Sandbox Code Playgroud)

c++ qt collision-detection qpainter

3
推荐指数
1
解决办法
1922
查看次数

如何从一个qml向另一个qml发送信号

我找不到一种从一个qml文件与另一个qml文件进行通信的方法。我知道有很多方法可以将信号从qml发送到C ++插槽并反向传输,但是我对两个不同qml文件之间的信号的所有研究都失败了。因此,如果有人可以告诉我如何解决这个问题,我将感到非常高兴。

首先是一个抽象的示例,以更好地理解问题。

基本的第一个QML看起来像这样:

//MyQML1.qml
Rectangle
{    
     id: idMyRec1
     signal mySignalFromQML1()

  Button
  {
       id: idMyButton1
       onClicked:
       {
            idMyRec1.mySignalFromQML1();      //to send the signal
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

第二个看起来像这样:

//MyQML2.qml
Rectangle
{
    id: idMyRec2

    Text{
         id: idMyText2
         text: "Hello World!"

         onMySignalFromQML1:       //to receive the signal from the other qml
         {                  
             idMyText2.text = "Good Bye World!";
         }
      }
}
Run Code Online (Sandbox Code Playgroud)

因此,此按钮应将我的第二个QML中的文本更改为“ Good Bye World!”。当单击时...但这不起作用...还有其他方法可以将信号从QML发送到另一个QML吗?还是我做错了什么?

qt qml

3
推荐指数
2
解决办法
8403
查看次数

为什么RangeSlider在QtQuick中可用而不是标准Widget

我需要一个像范围滑块(一个滑块,有两个手柄,用于设置最小/最大值).

我注意到RangeSliderQtQuick和QML 中有一个(不管是什么),但是没有像'标准小部件'那样QRangeSlider.

为什么是这样?

我可以RangeSlider在不编写QML代码的情况下使用QtQuick中的那个吗?

c++ qt

3
推荐指数
1
解决办法
2128
查看次数