Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Qt i-ая строка в textEdit'e  (Прочитано 2742 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ARVi

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Qt i-ая строка в textEdit'e
« : 24 Мая 2012, 15:58:58 »
Недавно начал изучать Qt
Решил начать с простеньких примеров которые я раньше делал на Delphi/C++
Программка просто считает сумму всех элементов
Программу почти "трансфернул" но тут у меня загвоздка, а именно i-ый элемент в textEdit'e
Сам код на делфи:
procedure TForm1.Button1Click(Sender: TObject);
var i,s,k:integer;
begin
s:=0;
k:=memo1.Lines.Count-1;
for i:=0 to k do
begin
s:=s+strtoint(memo1.Lines.Strings[i]);
end;
label1.Caption:=inttostr(s);
end;

А вот в Qt:
#include "mainwindow.h"
#include "ui_mainwindow.h"
int i,s,k;
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QObject::connect(ui->pushButton, SIGNAL(clicked()), this , SLOT(ClckBtn()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::ClckBtn()
{
   s=0;
   k=ui->textEdit->toPlainText().count()-1;
           for (i=0;i<k;i++)
           {
               s=s+ ... ;
           }
           ui->label->setText(QString::number(s));
}

Собственно проблема в строке s=s+ ... , как обратится к i-ой строке?
Либо гугл ничего толком не нашёл
Либо я глуп так и не научился гуглить за свои 5 лет пользования интернетом :)
future depends on you

Оффлайн Gekko

  • Участник
  • *
  • Сообщений: 222
    • Просмотр профиля
Re: Qt i-ая строка в textEdit'e
« Ответ #1 : 24 Мая 2012, 17:36:51 »
Недавно начал изучать Qt
Решил начать с простеньких примеров которые я раньше делал на Delphi/C++
Программка просто считает сумму всех элементов
Программу почти "трансфернул" но тут у меня загвоздка, а именно i-ый элемент в textEdit'e
Сам код на делфи:
procedure TForm1.Button1Click(Sender: TObject);
var i,s,k:integer;
begin
s:=0;
k:=memo1.Lines.Count-1;
for i:=0 to k do
begin
s:=s+strtoint(memo1.Lines.Strings[i]);
end;
label1.Caption:=inttostr(s);
end;

А вот в Qt:
#include "mainwindow.h"
#include "ui_mainwindow.h"
int i,s,k;
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QObject::connect(ui->pushButton, SIGNAL(clicked()), this , SLOT(ClckBtn()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::ClckBtn()
{
   s=0;
   k=ui->textEdit->toPlainText().count()-1;
           for (i=0;i<k;i++)
           {
               s=s+ ... ;
           }
           ui->label->setText(QString::number(s));
}

Собственно проблема в строке s=s+ ... , как обратится к i-ой строке?
Либо гугл ничего толком не нашёл
Либо я глуп так и не научился гуглить за свои 5 лет пользования интернетом :)

В Qt я не специалист но в wxWidgets я бы наверное сделал, что то такое: s += i;
Xubuntu 12.04 LTS с Xfce 4.10

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Qt i-ая строка в textEdit'e
« Ответ #2 : 24 Мая 2012, 18:24:12 »
k=ui->textEdit->toPlainText().count()-1; - это число символов вв тексте - 1. Оно тебе надо.
Надо что-то типа
QString str = ui->textEdit->toPlainText();
QStringList strlist = str.split("здесь символ конца строки"); //может как то иначе можно
и потом
k = strlist.count()-1;
...
s += strlist.toInt();

PS Таким извратом не занимался, может можно и проще
Извините, я все еще учусь

Оффлайн ARVi

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Re: Qt i-ая строка в textEdit'e
« Ответ #3 : 24 Мая 2012, 19:44:08 »
ошибка: 'class QStringList' has no member named 'toint'
PS не совсем понял что вы имели ввиду под "символом конца строки"
future depends on you

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Qt i-ая строка в textEdit'e
« Ответ #4 : 24 Мая 2012, 21:47:53 »
ARVi,
1. не toint, а toInt(); регистр имеет значение.
 Добавление сообщения чудит  s += strlist[ i ].toInt();
2. в массиве QSting находятся все строки с числами последовательно, между ними разделители строк, какой разделитель я не знаю, посмотрите дебагером.
 Смотрите хелр Qt
Извините, я все еще учусь

Оффлайн ARVi

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Re: Qt i-ая строка в textEdit'e
« Ответ #5 : 26 Мая 2012, 13:22:48 »
спасибо огромное помогло :) теперь понял)
future depends on you

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Re: Qt i-ая строка в textEdit'e
« Ответ #6 : 26 Мая 2012, 19:05:57 »
ARVi,
Только это не код. Нет проверок на правильность текста ... типа неправильных символов и т.п.
Извините, я все еще учусь

Оффлайн ARVi

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Re: Qt i-ая строка в textEdit'e
« Ответ #7 : 27 Мая 2012, 07:48:37 »
я понимаю
это можно и потом дописать
просто мне нужно самое главное извлечь
future depends on you

 

Страница сгенерирована за 0.028 секунд. Запросов: 25.