小编Ant*_*ony的帖子

Qt Quick vs. Qt Widget

我是Qt的新手,并不太了解Qt Quick Project和Qt Widget Project之间的区别.

我希望创建一个程序,绘制一个六边形的格子,用户可以旋转和剪切,以及平移和放大和缩小.它最终将成为MIDI控制器.哪种类型的项目会更好,为什么?

我希望这可以在桌面和移动平台上工作.

qt

68
推荐指数
5
解决办法
4万
查看次数

QGraphicsItem :: prepareGeometryChange()如何工作?

根据Qt文档,它"为几何变化准备项目.在更改项目的边界矩形之前调用此函数以使QGraphicsScene的索引保持最新.如果有必要,prepareGeometryChange()将调用update()."

我不明白的是QGraphicsItem如何知道边界矩形何时发生变化,以及它如何知道何时调用update().您是否应该在调用prepareGeometryChange()然后更改边界矩形后自己调用update()?

我非常感谢对一些看似透视的方法有所了解.

qt qgraphicsitem

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

为什么在销毁之前从场景中删除QGraphicsItem会更有效率?

根据QGraphicsItem析构函数文档,"在销毁项目之前从QGraphicsScene中删除项目更有效."

这是为什么?我想不出它会如何产生影响.如果确实有所作为,那么QGraphicsItem析构函数不应该只调用:

if (scene() != NULL)
    scene()->removeItem(this);
Run Code Online (Sandbox Code Playgroud)

我检查了源代码,这似乎并非如此,尽管有时我很难理解Qt源代码.编辑:请参阅jdi的答案中的评论.

qt qgraphicsitem qgraphicsscene

10
推荐指数
1
解决办法
3260
查看次数

C++模板类是否重复使用的每种指针类型的代码?

根据我的理解,如果你有一个std::vector<int>和一个std::vector<float>,编译器会创建两个类,每个类一个.因此,虽然减少了写入的代码量,但是不会减少可执行文件的大小(如果我错了,请纠正我).

即使类型是指针,是否也是如此?例如,是否会实例化std::vector<SomeClass*>并且std::vector<SomeOtherClass*>必然会导致编译器为两个实例中的每一个生成单独的代码?

c++ templates

10
推荐指数
3
解决办法
2029
查看次数

是否有任何理由在设置之前检查属性是否已设置?

我对VBA很新.我正在开发一个Excel项目,我一直看到项目中的代码如下所示:

If Me.Columns(i).Hidden = True Then
    Me.Columns(i).Hidden = False
End If
Run Code Online (Sandbox Code Playgroud)

还有这个:

If Range("SomeRange").Locked = True Then
    Range("SomeRange").Locked = False
End If
Run Code Online (Sandbox Code Playgroud)

特别是在这些情况下,是否有任何理由在设置之前检查属性是否已设置,或者这只是一个无用的检查?当然VBA引擎必须进行内部检查,以便它不会做任何不必要的事情.

excel vba excel-vba

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

在Python代码中"In [X]:"和"Out [Y]:"是什么意思?

我是一个新的Python用户,我确信这是一个非常基本的问题,但我无法在任何地方找到答案.当人们在线发布Python代码时,它的格式通常如下:

In [1]: # some stuff
Out[1]:
# some more stuff
Run Code Online (Sandbox Code Playgroud)

什么是In的,Out's和数字?为什么我的Python控制台不那样?

python

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

堆栈与堆,用于需要全局范围的固定数量的对象

我知道有关堆栈与堆的问题已被多次询问,但我对选择如何在C++中声明对象的一个​​小方面感到困惑.

我知道用"new"运算符访问的堆用于动态内存分配.根据Stack Overflow上另一个问题的答案,"堆用于存储数据,其中存储的生命周期无法提前确定".堆栈比堆快,似乎用于本地范围的变量,即,当相关的代码段完成时,变量会自动删除.堆栈还具有相对有限的可用空间量.

在我的例子中,我知道在运行时之前我将需要一个指向特定类的500个对象的指针数组,并且我知道我将需要在整个运行时期间存储指针和对象.堆没有意义,因为我事先知道我需要多长时间才能记忆,而且我确切地知道我将需要多少对象.如果范围有限,堆栈也没有意义; 另外,我不知道它是否能真正保存我的所有对象/指针.

处理这种情况的最佳方法是什么?为什么?谢谢!

c++ heap stack memory-management

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

是否在同一指针上调用new []两次而不调用之间的delete []导致内存泄漏?

我听说你每次使用"new"时都应该"删除",但是当我运行一个简单的测试程序(下面)时,我为arraySize或numLoops添加的数字似乎没什么区别.这会导致内存泄漏吗?

#include <iostream>

int main()
{
    double *array;
    const int arraySize = 100000;
    const int numLoops = 100000;

    for (int i = 0; i < numLoops; i++)
    {
        // do I need to call "delete [] array;" here?
        array = new double[arraySize];
    }

    int x;
    std::cin >> x; // pause the program to view memory consumption

    delete [] array;

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

c++ memory-leaks

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

如何忽略不输出字符的按键事件

我正在开发一种虚拟音乐键盘,可以让你按下键盘上的按键并让它弹奏音符.所以在我的MainWindow类中,我重新实现了keyPressEvent.我想忽略修饰符(Control,Alt,Shift等)生成的事件,以及其他非字符键(如Tab,Backspace和Enter)生成的事件.这样的事情是理想的:

void MainWindow::keyPressEvent(QKeyEvent *event)
{
    if (!event->key().isCharacter()))
    {
        event->ignore();
        return;
    }

    // handle the event
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做这样的事情(没有单独测试每个可能的非字符键)?如果不是,如果它是修饰符,至少有一种方法可以轻易忽略该事件吗?

qt

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

是否有可能在C++中的静态成员方法中调用非静态成员方法?

我怀疑这是可能的,但值得一提的是:我想从静态成员函数中调用非静态成员函数.我想为班级的每个当前实例做这件事.可能吗?

当我在测试类中尝试这个时,我收到以下错误:

"无法调用成员函数'void TestClass :: NonStaticMethod()'没有对象"

c++ static-methods

0
推荐指数
1
解决办法
137
查看次数

是否可以在内存分配之前复制动态分配的数组指针?

首先,如果之前有人问过,我道歉.我似乎找不到合适的信息.

以下代码不会打印"300",因为我认为它会:

#include <iostream>

int main()
{
  int *array;
  int *arrayCopy = array;

  array = new int[4];

  array[0] = 100;
  array[1] = 200;
  array[2] = 300;
  array[3] = 400;

  std::cout << arrayCopy[2];

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

但是,如果我移动线路,它确实如此

int *arrayCopy = array;
Run Code Online (Sandbox Code Playgroud)

在上面的代码中它后面的行下面.这是为什么?

(PS:我知道有一个内存泄漏,而且std :: vector更好......我只是好奇).

c++ arrays

0
推荐指数
1
解决办法
128
查看次数