Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Элементы не добавляются в вектор

Автор: QMainWindow 13.2.2011, 13:09

Не получается добавить double число в QVector. В заголовочном файле записал данный вектор, в конструкторе этого класса пишу: MyVector->append(MyValue); Вместо продолжения работы пишет ошибку -1073741819. Объект класса - виджет, которые создается в конструкторе ГО:

MainWindow::MainWindow()
{
    ...
    paintWidget = new PaintWidget(this);
    paintWidget->setGeometry(0, 15, width(), height()-30);
    paintWidget->setVisible(true);
    ...
    connect(this, SIGNAL(Data(QVector<double>*,QVector<double>*)), paintWidget, SLOT(PaintData(QVector<double>*,QVector<double>*)));
    ...
}

Вообще в него передаю, как видно выше, в слот PaintData два вектора. Затем хочу переписать их в два других вектора, принадлежащих этому виджету, но он выдает ошибку (т.е. элементы не добавляются не в конструкторе, не в слоте). Ощущение, будто он не хочет работать в принципе с QVector. Как лечить?)

Собственно конструктор моего виджета:
PaintWidget::PaintWidget(QWidget *parent):QWidget(parent)
{
    timer = new QTimer(this);
    j=0;
    X->append(0); //Тут пытаюсь добавить,а не получается...
    Y->append(0);
    connect(timer, SIGNAL(timeout()), this, SLOT(NewFrame()));
}

и на всякий случай сам слот:
void PaintWidget::PaintData(QVector<double> *CoordX, QVector<double> *CoordY)
{
    X->clear(); Y->clear();
    for(i=0; i<CoordX->size(); i++)
    {
        X->append(CoordX->value(i));
        Y->append(CoordY->value(i));
    }
    qDebug()<<CoordX->size()<<CoordY->size();
    timer->start(42);
}

Автор: Kagami 13.2.2011, 16:12

А где у тебя векторы создаются?

Автор: Dovgon 13.2.2011, 19:38

Ты используешь указатель на вектор, но не где не показал как его создаешь.

Автор: QMainWindow 13.2.2011, 20:06

Спасибо, получилось.

Автор: Obey-Kun 25.2.2011, 4:15

Используй сигналы и слоты, работающие с const QVector&. Указатели тут ни к чему.

Автор: kwisp 25.2.2011, 10:33

Цитата(Obey-Kun @ 25.2.2011, 4:15) *
Используй сигналы и слоты, работающие с const QVector&. Указатели тут ни к чему.

да. и у вектора есть способы скопировать его по приличнее чем рукописный цикл!

Автор: Obey-Kun 25.2.2011, 18:15

Кстати да. А operator<< aka append() для vector<T> в качестве аргумента есть.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)