c++ - 在 Mainwindow 的 GlWidget 中创建的访问列表以写入文件
问题描述
我是编程新手。可能,这个问题很容易回答。我正在为以下点生成一个列表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
未声明的错误消息。如何解决?
解决方案
可能它会对其他新手有所帮助,我不确定它是否是最好的解决方案。至少它没有任何问题。
连接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;
}
推荐阅读
- firebase - 项目 A 中的 Google App Engine 无法使用项目 B 中的 Firebase 云消息传递
- typescript - 如何更新 Firestore 数据库中的大量文档?
- machine-learning - 如何在这个 grad cam 代码中使用现有的 ckpt 文件?
- python - 根据条件重新运行某些成功的气流任务
- netsuite - 使用客户外部 ID 创建联系人
- python - 线程中的生成器
- java - Java 中的 LinkedList 等价于 C++ 代码
- php - 如何在前端使用 Select 通过 ACF 字段运行 Wordpress 查询
- python - 如何使用 pyodbc 将空值插入 SQL Server 数据库表?
- java - 在线程之间传递/通知数据的最快方法