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