嘿伙计我正在尝试制作以下插槽:用户应在行编辑中输入一系列数字,并在它们之间留有空格(例如:5 10 15 10 2)我希望将这些数字存储到矢量中整数。在读完之后,我希望以下列方式更改向量的值 - 从第二个元素开始直到结束,每个元素应该等于以下内容:vector[i] = vector[i] - vector[i-1]
。同样,这不算第一个。我会做更多的计算,但看起来我还不能完成这项工作。
布局如下:按钮,lineEdit和Label。 这是头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QVector>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QVector<int> vec;
private slots:
void compute();
};
#endif // MAINWINDOW_H
实施:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->lineEdit
, SIGNAL(editingFinished()), this, SLOT(compute()));
connect(ui->pushButton
, SIGNAL(pressed()), this, SLOT(compute()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow :: compute()
{
// Read user input
QString numbers = ui->lineEdit->text();
QString tmp; // create temp string which will be used to store the temp substrings of each int
numbers+=" ";
for(int i = 0; i < numbers.length()-1; i++)
{
if(numbers[i].isDigit())
{
tmp +=numbers[i];
}
else
{
bool ok = true;
int iTime = tmp.toInt(&ok, 10);
vec.push_back((iTime));
tmp="";
}
}
//compute the real vector that we will search the max subarray from
for(int i = 1; i < vec.size(); i++)
{
vec[i] = vec[i] - vec[i-1];
}
int tt = 0;
for(int z = 0; z != vec.size(); z++)
{
tt+= vec[z];
}
ui->label->setText( QString::number(tt));
}
我不会发布主函数,因为它是创建Qt GUI应用程序时的标准函数。所以,问题是,以下行:ui->label->setText( QString::number(tt));
总是在标签上打印零。我在代码块中创建了这个程序,没有Qt GUI库,我得到了它的工作。我对这个问题很感兴趣。提前谢谢。
答案 0 :(得分:1)
for(int z = 0; z != vec.size(); z++)
应该是:
for(int z = 0; z < vec.size(); z++)