编辑 QVector
Posted
技术标签:
【中文标题】编辑 QVector【英文标题】:Editing a QVector with 【发布时间】:2014-01-16 00:31:34 【问题描述】:所以我正在尝试创建一个简单的程序,允许我使用随机函数来操作向量,但我觉得我忘记了一些相当重要和基本的东西 请随时查看我发布的代码并让我知道解决方案是什么。我收到的错误是 myvec 是“索引超出范围,这仅意味着在我创建的插入方法中推回不起作用。不知道为什么,我还是个新手。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QVector>
QVector<QString> myvec;
void insert(QVector<QString> vec);
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
ui->setupUi(this);
MainWindow::~MainWindow()
delete ui;
void MainWindow::insert(QVector<QString> vec)
vec.push_back("Hello World");
void MainWindow::on_pushButton_clicked()
insert(myvec);
ui->label->setText(myvec.at(0));
【问题讨论】:
【参考方案1】:你的功能
void MainWindow::insert(QVector<QString> vec)
vec.push_back("Hello World");
采用向量按值。这意味着当它被调用时,参数被 复制 以在函数中使用,并且当您在那里修改值时,它不会反映在函数调用的实例 outside (因为修改是在copy上完成的)。
您希望通过引用传递向量,这样它就不会被复制,并且对仍然存在于函数调用之外的对象进行修改。这是通过在签名中添加&
来完成的:
void MainWindow::insert(QVector<QString> & vec)
vec.push_back("Hello World");
请注意,您也可以通过 const 引用,这通常是出于效率原因。这意味着只有一个引用被传递给函数,但不允许在函数体内修改实例。
【讨论】:
以上是关于编辑 QVector的主要内容,如果未能解决你的问题,请参考以下文章
vue 表格数据编辑,点击取消或者完成按钮后,关闭编辑状态没有及时生效