构建Qt Slog时计算错误信息

时间:2013-04-24 13:59:37

标签: c++ qt

嘿伙计我正在尝试制作以下插槽:用户应在行编辑中输入一系列数字,并在它们之间留有空格(例如: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库,我得到了它的工作。我对这个问题很感兴趣。提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

应该是:

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