Список доступа, созданный в GlWidget в Mainwindow для записи файла - PullRequest
0 голосов
/ 06 октября 2018

Я новичок в программировании.Возможно, на этот вопрос очень просто ответить.Я создаю список для точек в glwidget.cpp:

void GLWidget::setPoint(double px, double py, double pz)
{
          pc[0] = px;
          pc[1] = py;
          pc[2] = pz;
         pointList.append(pc[0]);
         pointList.append(pc[1]);
         pointList.append(pc[2]);
}
void GLWidget::plotPoint()
{
        glPointSize(7.0);
        glColor3f (0, 0, 0);
        for (int i=0; i<pointList.count()-2; i=i+3)
        {
          glBegin(GL_POINTS);
          glVertex3f(pointList.at(i), pointList.at(i+1), pointList.at(i+2));
          glEnd();
        }
        update();
}

Список определен в glwidget.h:

class GLWidget : public QOpenGLWidget
{
    Q_OBJECT
public:
    GLWidget(QWidget *parent = 0);
    ~GLWidget();

    QList<double> pointList;
}

, и я пытаюсь записать файл в mainwindow.cpp:

void MainWindow::on_actionSave_triggered()
{
    QFile file(filePath);
    if(!file.open(QFile::WriteOnly | QFile::Text)) {
    QMessageBox::warning(this,"..","file not open");
    return;
  }
    QTextStream out(&file);

    out << "// point:\n";
    for (int i=0; i<pointList.count()-2; i=i+3)
    {
    out << pointList;
    }
}

Кажется, что mainwindow.cpp не видит список, так как я получаю сообщение об ошибке, что pointList не объявлено.Как это исправить?

1 Ответ

0 голосов
/ 08 октября 2018

Возможно, это поможет другим новичкам, и я не уверен, что это лучшее решение.По крайней мере, это работает без проблем.

соединение в mainwindow.cpp:

connect(this, SIGNAL(sendPoint(QList<double>)),
                 ui->openGLWidget, SLOT(getPoint(QList<double>)));

испускать сигнал:

void MainWindow::on_pushButton_add_clicked()
{
    ...
     emit sendPoint(QList<double> (pointList));
}

получение в слоте:

void GLWidget::getPoint(QList<double> (pointList))
{
    pointGList = pointList;
}
...