标签: qvector

如何制作小部件的QVector?

如何使一个QVector小部件,如动态数的(或其他容器类),QPushButtonQComboBox在Qt的4?

我在我的窗口类的构造函数中使用了以下内容:

QVector<QComboBox*> foo; // Vector of pointers to QComboBox's
Run Code Online (Sandbox Code Playgroud)

现在我想用一些可以动态改变的控件来填充它:

for(int count = 0; count < getNumControls(); ++count) {
    foo[count] = new QComboBox();
}
Run Code Online (Sandbox Code Playgroud)

我搜索了几个小时试图找到答案.Qt论坛提到了一个QPtrList,但Qt4中不再存在该类.我稍后尝试使用数组样式索引或.at()函数从每个文本中获取文本值.

我非常感谢声明,初始化,和填充的任何任何数据结构的一个例子QWidgets(QComboBox,QPushButton等)

qt qt4 qwidget qvector

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

在函数中使用QVector的子集

如何将QVector的一部分发送到函数?

QVector<int> a;
a.append(1);
a.append(2);
a.append(3);
a.append(4);
a.append(5);
Run Code Online (Sandbox Code Playgroud)

某些打印功能应打印"2 3 4",将矢量的子集作为参数.

在R中,这是可能的a[2:4].

这是可能吗?

注意:在std::vector,建议使用该insert函数创建一个新变量.这是一个不同的插入,但QVector我找不到推荐的方法.

c++ qt qvector

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

从QList填充QVector

我有一个QList和QVector.我填充Qlist,然后尝试复制到QVector.Ovector有一个fromList()方法.但它不起作用.

我的代码:

QList<int> listA;
QVector<int> vectorA; //I also tried QVector<int>vectorA(100);

for(int i=0; i<100; i++)
{
    listA.append(i);
}

vectorA.fromList(listA);
Run Code Online (Sandbox Code Playgroud)

此代码后,vectorA返回空

我在Linux下使用Qt 4.8.5

qt qt4 qlist qvector

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

返回QVector的最佳方式

我试图从一个应该计算移动平均值的函数返回一个QVector.我的问题是如何使功能更有效.数学很好,我更想知道如果我在返回QVector时做错了什么.这是我到目前为止的代码:

QVector<double> moving_exponential_average(const QVector<double>& a, double lambda) {
        if(lambda <0 ) {
            lambda = 0;
        }
        if(lambda >1) {
            lambda = 1;
        }
        QVector<double> b;
        b.reserve(a.size());

        b.append(a[0]);
        double l_inv = 1-lambda;
        for(unsigned int i = 1; i < a.size(); ++i) {
            b.append(a[i]*lambda+l_inv*b[i-1]);
        }
        return b;
    }
Run Code Online (Sandbox Code Playgroud)

我使用默认构造函数来保持QVector不设置默认值.我尝试调整大小的速度要慢得多.您有什么建议如何优化?

问候

c++ optimization qt qvector

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

在普通 for 循环中更改 QVector 的对象

如果我有一个 QVector,我可以使用基于范围的循环,使用引用并更改 QVector 中的对象。

但如果我在修改对象时需要索引,我必须使用普通的 for 循环。但是我怎样才能改变 QVector 中对象的值呢?

作为解决方法,我在更改临时对象后使用了替换方法,但这有点难看。

这是代码:

struct Resource {
    int value = 0;
};

int main(int argc, char *argv[])
{
    QVector<Resource> vector{Resource{}, Resource{}, Resource{}};

    qDebug() << vector.at(0).value
             << vector.at(1).value
             << vector.at(2).value;

    for(Resource &res : vector)
        res.value = 1;

    qDebug() << vector.at(0).value
             << vector.at(1).value
             << vector.at(2).value;

    for(int i = 0; i < vector.size(); ++i) {
        //Resource &res = vector.at(i); <-- won't compile: cannot convert from 'const Resource' to 'Resource &'
        Resource &res = vector.value(i); //Compiles, but …
Run Code Online (Sandbox Code Playgroud)

c++ qt containers qvector

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

QVector operator []没有成员值

我试图将数据保存到与此类似的成员值

我有一个包含成员变量的QVector对象..at()禁止使用是因为我试图转换const,.value()不保存更改,因为它只是一个实例.

我尝试使用[]运算符返回对象的非const引用,以便更改成员变量的值我怎么得到错误

class QVector<Object>' has no member named 'value'
                 objects[i].value = newValue;
                           ^
Run Code Online (Sandbox Code Playgroud)

以下是使用缩短的类导致错误的代码段:

void Class::linkValueToObject(QVector<Object>* objects, QStringList* data )
{
    for( int i = 0; i < object->size(); ++i )
        for( int j = 0; j < data->size(); ++j )
            if( conditionMet )
            {
                newValue = data.at(j)
                objects[i].value = newValue //Line of error
                break;
            }
}

class Object
{
public:
    QString value;    
}
Run Code Online (Sandbox Code Playgroud)

导致此错误的原因是什么?

c++ qt const operators qvector

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

未分类的Qt容器

我有一个QVector,它应该存储文件路径,比如

"./zThumbnail/1004.jpeg"
"./zThumbnail/1005.jpeg"
"./zThumbnail/1006.jpeg"
"./zThumbnail/1007.jpeg"
"./zThumbnail/1008.jpeg"
"./zThumbnail/1009.jpeg"
"./zThumbnail/101.jpeg"
"./zThumbnail/1010.jpeg"
"./zThumbnail/1011.jpeg"
"./zThumbnail/1012.jpeg"
"./zThumbnail/1013.jpeg"

QFileInfoList filelistinfo = dir.entryInfoList();
foreach (const QFileInfo &fileinfo, filelistinfo) {
imagePath.push_back(fileinfo.absoluteFilePath());
qDebug() << fileinfo.absoluteFilePath();
}


./abc/1.jpg
./abc/2.jpg
./abc/3.jpg
.
.
.
./abc/1209.jpg
Run Code Online (Sandbox Code Playgroud)

但不是按照上面的顺序存储它,而是存储像

./abc/1.jpg
./abc/10.jpg
./abc/100.jpg
./abc/1000.jpg
./abc/1001.jpg
.
.
Run Code Online (Sandbox Code Playgroud)

如何以数字顺序存储图像文件路径?

qstring qt qdir qvector qfileinfo

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

QVector与自定义对象有参数?

我正在尝试将QVector与名为RoutineItem的自定义对象一起使用.

但是给出了这个错误:

C:\Qt\5.2.1\mingw48_32\include\QtCore\qvector.h:265: error: no matching function for call to 'RoutineItem::RoutineItem()'
Run Code Online (Sandbox Code Playgroud)

这是RoutineItem构造函数:

RoutineItem(QString Name,int Position,int Time,bool hasCountdown = false,bool fastNext = false);
Run Code Online (Sandbox Code Playgroud)

如果我删除所有构造函数参数,我不再得到该错误.如何将QVector与具有参数的自定义对象一起使用?

c++ qt vector qvector

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

QVector(或std :: vector)保留(或调整大小)向下不释放内存

说我有一个QVector,我为420000元素调用QVector :: reserve.在那之后我又打电话QVector::reserve给42个元素.我注意到,在执行此操作后,该进程仍然为这些420000个元素分配了内存.当我将QVector大小缩小到42 时,为什么内存不会被释放?

请使用以下代码:

#include <QCoreApplication>
#include <QVector>
#include <QDebug>

typedef QVector<QPointF> PointVec;
typedef QList<PointVec*> PointVecList;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    qDebug() << "Processing...";

    PointVecList list;

    for (int i = 0; i < 4200; i++) {
        PointVec *v = new PointVec();

        v->reserve(420000);
        v->resize(420000);

        v->reserve(42);
        v->resize(42);

        list.append(v);
    }

    qDebug() << "End of processing...";

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

此代码在32位系统上崩溃抛出std::bad_alocexception(Unhandled exception at 0x7729C41F in QtConsoleApplication1.exe: Microsoft C++ exception: std::bad_alloc at …

c++ qt memory-management stl qvector

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

将 QVector 指针作为参数传递

1)我想将 QVector 的指针传递给一个函数,然后用它做事。我试过这个:

void MainWindow::createLinearVector(QVector<float> *vector, float min, float max )
{
    float elementDiff=(max-min)/(vector->size()-1);

    if(max>min) min -= elementDiff;
    else        min += elementDiff;

    for(int i=0; i< vector->size()+1 ; i++ )
    {
        min += elementDiff;
        *(vector+i) = min; //Problematic line
    }

}
Run Code Online (Sandbox Code Playgroud)

但是编译器给我 “不匹配的运营商=”*(vector+i) = min;行。在 QVector 上执行此类操作的最佳方法是什么?

2) 该函数应该以 matlab : 运算符的工作方式线性分布向量上的值,例如 vector(a:b:c)。在 Qt 中执行这些事情的最简单和最好的方法是什么?

编辑:

有了这里的帮助,最初的问题就解决了。:)

我也改进了方法本身。通过使用线性插值而不是像上面那样的多次加法,可以大大提高精度。多次加法会累积误差,而在很大程度上可以通过线性插值消除误差。

顺便说一句,第一个函数中的 if 语句是不必要的,即使在多重加法方法中也可以通过稍微重新排列一些东西来删除。

void MainWindow::createLinearVector(QVector<double> &vector, double min, double max )
{
    double range = max-min;
    double n =   vector.size(); …
Run Code Online (Sandbox Code Playgroud)

c++ qt qvector qtcore

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

C++ 中数组的 QVector

我试图将多项式系数保存在QVector. 我的多项式是 2 次,所以它有三个数字。

当我定义时QVector<double[3]> zeros_Real(n + 1)出现错误(如下)。首先,我认为我可以使用QVector<QVector<double>>,但这会是速度和内存问题,所以我决定不这样做。

为什么我不能有QVector元素double[3]

错误:

mingw32-make[1]: *** [debug/main.o] Error 1
mingw32-make: *** [debug] Error 2
21:27:01: The process "C:\Qt\Tools\mingw492_32\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project untitled11 (kit: Desktop Qt 5.5.1 MinGW 32bit)
When executing step "Make"
Run Code Online (Sandbox Code Playgroud)

c++ arrays qt qvector

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

有没有办法将QVariant与QVector一起使用?

有没有办法使用的方式QVariantQVector

我需要实现一个比较两个向量的函数,例如:

#include <QDebug>
#include <QVector>
#include <QString>

bool compareVectors(QVector<QVariant> vec1, QVector<QVariant> vec2)
{
    qDebug() << "Comparing vectors!";

    if( vec1 != vec2 )
    {
        qDebug() << "The vectors are different!";
        return false;
    }

    qDebug() << "The vectors are equal!";
    return true;
}

int main()
{
    QVector<double> v1;
    QVector<double> v2;
    v1 << 1 << 2;
    v2 << 3 << 4;

    QVector<QString> v3;
    QVector<QString> v4;
    v3 << "1" << "2";
    v4 << "3" << "4";

    compareVectors(v1, v1);
    compareVectors(v3, …
Run Code Online (Sandbox Code Playgroud)

c++ qt qvariant qvector

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

如何继承QVector?

我有一个名为Symbol的类,我想创建一个QVector子类(Symbols)来添加一些有用的方法.但是当我使用来自另一个类A的符号时,编译器会给出错误'符号没有命名类型'.

class Symbols: public QVector< Symbol >
{
public:
    Symbols() {}

    // Useful methods
    QSymbol findSymbol(const QString &name);

    // ...
};

class A
{
private:
    Symbols symbols;
};
Run Code Online (Sandbox Code Playgroud)

它是否正确分类?

为什么在编译A类时出现'符号不命名类型'?

c++ qt qvector qtcore

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