Russian Qt Forum
Ноябрь 24, 2024, 07:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: помогите студенту ...  (Прочитано 5570 раз)
ivanbars
Гость
« : Апрель 21, 2010, 12:42 »

надо создать таблицу, данные в которую вносятся из файла, .csv 
дальше по этим данным должен строиться график...
очень прошу описать подробно... 
Записан
shirushizo
Гость
« Ответ #1 : Апрель 21, 2010, 13:50 »

Мда... я думаю телепаты в отпуске...
Во-первых, зачем база не понятно и если так сильно нужна какая СУБД?
Во-вторых, стоит воспользоваться поиском - для графиков есть компонента и по чтению файлов инфы завались.
Записан
Vass
Гость
« Ответ #2 : Апрель 21, 2010, 14:34 »

Мда... я думаю телепаты в отпуске...
Во-первых, зачем база не понятно и если так сильно нужна какая СУБД?
Во-вторых, стоит воспользоваться поиском - для графиков есть компонента и по чтению файлов инфы завались.

Я думаю топикстартер имел ввиду "напишите мне нахаляву программу которая умеет.... <Текст топика> и расскажите как это работает, а то меня из института выгонят"

« Последнее редактирование: Апрель 21, 2010, 14:41 от Vass » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Апрель 21, 2010, 14:35 »

лучше начать c SQLite, т.к. можно всё сделать в программе, освоить азы SQL'я.
1) Создать соединение с БД
2) Создать в БД таблицу
3) Читать построчно файл, разбивая на поля (столбцы) каждую строку
4) Записывать строку в БД

В принципе могу код дать, частично.
Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Апрель 21, 2010, 14:36 »

Vass, ну может быть и не так. Просто не имеет никаких представлений, нужна схема для изучений.
Записан

Юра.
ivanbars
Гость
« Ответ #5 : Апрель 21, 2010, 14:39 »

прошу прощение, это не база а скорей занесение данных в таблицу из файла Excel
просто дело в том что я только начал изучать C++ и не успеваю за все хвататься, а сроки с выполнением этой работы поджимают!...
я так понимаю что надо в ТаблВиджет внести данные из файла в котором они хранятся... при открытии текстовым редактором выглядит как:
Цитировать
#12.01.07.Fri;TRIGGER;FA(Hz);Angle_FA(Deg.);UA(kV);P(MW);Q(MVA);KHARANOVSKAYA TPP-HOLBON SS
13:35:36.000;-115.66;49.9999;113.470;137.490;85.880;-31.650;
13:35:36.020;-115.64;49.9997;113.470;137.490;85.880;-31.650;
13:35:36.040;-115.62;49.9994;113.470;137.500;85.870;-31.660;
через точку с запятой идет отдельная ячейка....(я прикреплю файл в котором хранятся данные)
ну и по данным надо построить график, если можете помогите это реализовать, или может у кого то есть подобные примеры, ну а там я уж попробую разобраться...
Записан
Vass
Гость
« Ответ #6 : Апрель 21, 2010, 14:50 »

А для вывода графика либо придется лезть в QWT, там есть класс QwtPlot http://qwt.sourceforge.net/class_qwt_plot.html
либо, если не хочется возиться с QWT,  на просторах итернета советуют QtBasicGraph http://code.google.com/p/ewiframework/source/browse/third_party/basicgraph/?r=46940a8648fa434414899c7da5820d8926c79ecf вот тут например
Записан
vadim303
Гость
« Ответ #7 : Апрель 21, 2010, 14:58 »

Ну например из cvs c двумя столбцами можно прочитать и заполнить табличку так:
Код:
void Dialog::loadCSV(QString filename)
{
    QFile file(filename);

    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return;

    table.clear();

    bool ok;
    qreal x,y;
    QTextStream in(&file);
    QString line = in.readLine(); // первая строка - заголовок. пропускаем
    while (!in.atEnd()) {
        line = in.readLine();
        QStringList strList = line.split(QChar(','));
        if (strList.size()<2) break;
        x = strList.at(0).toDouble(&ok);
        if (ok) y = strList.at(1).toDouble(&ok);
        if (!ok) break;
        table.append(QPointF(x,y));
    }
    updateTableWidget();
}

void Dialog::updateTableWidget()
{
    ui->tableWidget->setColumnCount(2);
    if (table.size() == 0)
    {
        ui->tableWidget->setRowCount(1);
        ui->tableWidget->clear();
    }
    else
    {
        ui->tableWidget->setRowCount(table.size());
        for (int i=0; i<table.size(); ++i)
        {
            ui->tableWidget->setItem(i,0,new QTableWidgetItem(QString::number((double)table.at(i).x(),'f')));
            ui->tableWidget->setItem(i,1,new QTableWidgetItem(QString::number((double)table.at(i).y(),'f')));
        }
    }

}

Объявления в Dialog-е:
Код:
QVector<QPointF> table;
void loadCSV(QString filename);
void updateTableWidget();

Для нескольких столбцов надо будет вместо QPointF свой класс данных строки создать. Ну и функции чтения и заполнения подредактировать для большего числа столбцов. Но принцип вроде ясен?

Про график уже советовали... но если учебная задача, то наверно лучше будет свою функцию рисования написать
« Последнее редактирование: Апрель 21, 2010, 15:03 от vadim303 » Записан
ivanbars
Гость
« Ответ #8 : Апрель 21, 2010, 15:04 »

спасибо всем большое, сейчас попробую воспользоваться советами!.... а насчет учебного задания, это просто я вызвался изучить  С++.... и преподаватель посоветовал данную среду..
еще раз спасибо, сейчас попробую разобраться!...
Записан
NicK
Гость
« Ответ #9 : Апрель 22, 2010, 13:02 »

А для вывода графика либо придется лезть в QWT, там есть класс QwtPlot http://qwt.sourceforge.net/class_qwt_plot.html
либо, если не хочется возиться с QWT,  на просторах итернета советуют QtBasicGraph http://code.google.com/p/ewiframework/source/browse/third_party/basicgraph/?r=46940a8648fa434414899c7da5820d8926c79ecf вот тут например

Где можно посмотреть на скриншоты работ с использованием этого QtBasicGraph ?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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