0

嘿伙计们,我正在尝试制作以下插槽:用户应该在行编辑中输入一系列数字,它们之间有空格(例如: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 库,我让它工作了。我很好奇问题出在哪里。提前致谢。

4

1 回答 1

1
for(int z = 0; z != vec.size(); z++)

应该:

for(int z = 0; z < vec.size(); z++)
于 2013-04-24T14:01:38.650 回答