小编Ran*_*zen的帖子

我怎样才能知道Arch Linux中是否已经安装了特定的软件包

我想编写一个bash脚本,允许我检查是否已经在arch linux中安装了某个软件包.

我怎样才能做到这一点?

linux bash archlinux

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

QVariant与自有类型的比较工作?

更新

我创建了一个qt bugticket希望文档将被扩展.

原始问题

相信2010年问题Qt文档,operator==()不适用于自定义类型.

引用:

bool QVariant :: operator ==(const QVariant&v)const

将此QVariant与其进行比较v,true如果它们相等则返回; 否则返回false.

QVariant使用它包含的type()的相等运算符来检查是否相等.如果它的类型与此变体的类型不同,QVariant将尝试convert() v.查看canConvert()可能的转换列表.

警告:此功能不支持注册的自定义类型qRegisterMetaType().

我试图从2010年Stackoverflow问题重现repro案例,并且比较对我没有任何问题.

我也更进一步,尝试使用自己的类进行比较,这也很完美.要重现,请将以下代码放入任何标头中:

enum MyEnum { Foo, Bar };
Q_DECLARE_METATYPE(MyEnum)

class MyClass
{
  int value;
public:
  MyClass() : value(0)
  {
  }

  MyClass(int a) : value(a)
  {
  }

  bool operator==(const MyClass &) const
  {
    Q_ASSERT(false); …
Run Code Online (Sandbox Code Playgroud)

c++ qt qvariant qt5

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

GLSL:OpenGL 缓冲区中的结构数组与数组结构

现在,当阅读 Internet 中的不同资源时,如果您要按顺序处理大型数组,那么数组结构似乎是一种非常高效的数据存储方式。

例如在 C++ 中

struct CoordFrames
{
    float* x_pos;
    float* y_pos;
    float* z_pos;
    float* scaleFactor;
    float* x_quat;
    float* y_quat;
    float* z_quat;
    float* w_quat;
};
Run Code Online (Sandbox Code Playgroud)

允许比数组更快地处理大数组(感谢 SIMD)

struct CoordFrame
{
    glm::vec3 position;
    float scaleFactor;
    glm::quat quaternion;
};
Run Code Online (Sandbox Code Playgroud)

GPU 是专为大规模并行计算而设计的处理器。SIMD 是这里的“必备”。所以结论是数组结构在这里最有用。

但 ...

  • 我从未在任何地方看到过这样的 GLSL 着色器(这对我来说是错误的):

    #define NUM_POINT_LIGHTS 16
    uniform float point_light_x[NUM_POINT_LIGHTS];
    uniform float point_light_y[NUM_POINT_LIGHTS];
    uniform float point_light_z[NUM_POINT_LIGHTS];
    uniform float point_light_radius[NUM_POINT_LIGHTS];
    uniform float point_light_color_r[NUM_POINT_LIGHTS];
    uniform float point_light_color_g[NUM_POINT_LIGHTS];
    uniform float point_light_color_b[NUM_POINT_LIGHTS];
    uniform float point_light_power[NUM_POINT_LIGHTS];
    
    Run Code Online (Sandbox Code Playgroud)

    或类似的东西也不经常看到:

    #define NUM_POINT_LIGHTS 16
    uniform vec3 point_light_pos[NUM_POINT_LIGHTS]; …
    Run Code Online (Sandbox Code Playgroud)

arrays performance gpu glsl data-oriented-design

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

将Qt属性与在命名空间中定义的自定义类型一起使用

使用自己的类型作为属性类型时,当前存在问题。

我的自定义类型是在名称空间中定义的。当我将其放入全局名称空间时,一切都可以正常工作。

是否可以将名称空间中的自定义类型用作属性值?

这是一个最小的示例(我正在使用Qt5.0和g ++ 4.7.3)

这是test.pro文件:

LANGUAGE  = C++
QT += core gui widgets
TARGET = test
QMAKE_CXXFLAGS += -std=c++11
HEADERS += test.h
SOURCES += test.cpp
Run Code Online (Sandbox Code Playgroud)

这是test.h文件:

#include <QtCore>
#include <QtGui>
#include <QtWidgets>

namespace MyNamespace
{
  struct MyValue
  {
  private:
    QString a;
    int b;

  public:
    MyValue(const QString &a="", int b=0)
      : a(a), b(b)
    {
    }

    bool operator !=(const MyValue &other) const
    {
      return (this->a!=other.a) || (this->b!=other.b);
    }

    friend QDataStream &operator<<(QDataStream &stream, const MyNamespace::MyValue &value);
    friend …
Run Code Online (Sandbox Code Playgroud)

c++ qt qt5

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

如何为qtcreator编写调试助手?

当使用带有gdb的glm :: vec3类调试我的C ++程序时,使用这些向量类非常麻烦:
qtcreator中调试器的屏幕截图

我已经阅读了手册,可以编写调试助手。
我设法让qtcreator加载文件(如果我的python文件语法错误,调试器将立即退出并出现错误)。

如何编写简约的调试助手?

我已经尝试过的:

这是C ++代码

#include <glm/glm.hpp>

class Foo
{
};

int main(int, char**)
{
  glm::vec3 vec3(42, 64, 256);
  Foo foo;

  (void)vec3;
  (void)foo;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我的调试助手:

from dumper import *

def qdump__glm__vec3(d, value):
    d.put("Yay, vec3 works :)")

def qdump__Foo(d, value):
    d.put("Yay, Foo works :)")
Run Code Online (Sandbox Code Playgroud)

vec3代码似乎没有任何可见的效果。对于foo来说,它似乎可以做些什么,但是Yay, Foo works :)qtcreator只是显示而不是打印<not accessible>。请参见以下屏幕截图:

到目前为止我的进步

c++ debugging gdb qt-creator glm-math

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