Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2013, 23:06   #1
Bitter_Schokolade
Несчастный студент
Пользователь
 
Аватар для Bitter_Schokolade
 
Регистрация: 31.03.2013
Сообщений: 52
Вопрос C++ БИБЛИОТЕКИ QT ДЛЯ GUI-ПРИЛОЖЕНИЯ

Здравствуйте!

Помогите, пожалуйста, доработать мою программу.

Задача:
Реализовать программу, записывающую в таблицу расписание движения электропоездов. Программа должна уметь: добавлять строки в таблицу, удалять строки из таблицы, сохранять таблицу, открывать сохраненную таблицу.

Программа, написанная мной, работает правильно.

Дополнительное требование:
Столбцы, в которых указывается время отправления и время прибытия, должны иметь формат времени.

Я не знаю, как выполнить дополнительное требование. Уважаемые форумчане, если можете помочь, очень вас прошу, помогите!

//table.h

Код:
#ifndef TABLE_H
#define TABLE_H

#include <QtGui/QWidget>
#include <QtGui>

class Table : public QWidget
{
    Q_OBJECT
private:
    QTableWidget* table;
    QStringList lst;
    
public:
    Table(QWidget *parent = 0);
    ~Table();
public slots:
    void add();
    void del();
    void open();
    void save();
};

#endif // TABLE_H
//table.cpp

Код:
#include "Table.h"
#include <QtGui>

Table::Table(QWidget *parent)
    : QWidget(parent)
{
    table = new QTableWidget(1,4);

    lst << "A point of departure" << "Departure time" << "A point of arrival" << "Arrival time";
    table->setHorizontalHeaderLabels(lst);

    QPushButton* addBtn = new QPushButton("Add");
    QPushButton* delBtn = new QPushButton("Delete");
    QPushButton* openBtn = new QPushButton("Open");
    QPushButton* saveBtn = new QPushButton("Save");

    QVBoxLayout* vbxLayout = new QVBoxLayout; // Размещение элементов (вертикальное)
    QHBoxLayout* hbxLayout = new QHBoxLayout; // Размещение элементов (горизонтальное)

    hbxLayout->addWidget(addBtn);
    hbxLayout->addWidget(delBtn);
    hbxLayout->addWidget(openBtn);
    hbxLayout->addWidget(saveBtn);
    vbxLayout->addWidget(table);
    vbxLayout->addLayout(hbxLayout);

    connect(addBtn, SIGNAL(clicked()), SLOT(add())); // Реализация связей (слота и сигнала)
    connect(delBtn, SIGNAL(clicked()), SLOT(del()));
    connect(openBtn, SIGNAL(clicked()), SLOT(open()));
    connect(saveBtn, SIGNAL(clicked()), SLOT(save()));

    setLayout(vbxLayout); // Установка компоновки элементов
    resize(438, 400);
    setWindowTitle("Timetable");
}

void Table::add()   // Слот добавления строки
{
    int lastRow = table->rowCount(); // Вычисление последней строки
    table->insertRow(lastRow); // Добавление строки
}

void Table::del()   // Слот удаления строки
{
    int rowID = table->currentRow(); // Нахождение текущей строки
    table->removeRow(rowID); // Удаление текущей строки
}

void Table::open()  // Слот открытия файла и чтения информации из него
{
    QFile file("E:\\Development\\Files\\Timetable.txt");

    if (file.open(QIODevice::ReadOnly)) // Открытие файла для чтения информации
    {
        QTextStream stream(&file); // Поток для чтения текста
        QString bufer;
        QStringList word;
        QTableWidgetItem* cell; // Ячейка
        int rows = 0; // Счетчик строк

        while (table->rowCount() > 0) // Очищаем таблицу
        {
            table->removeRow(0);
        }

        while(!stream.atEnd())
        {
            bufer = stream.readLine(); // Считываем строку из потока
            word = bufer.split(" "); // Разделяем строку на слова (разделитель - пробел)

            table->insertRow(rows); // Вставляем строку

            for (int columns = 0; columns < 4; ++columns)
            {
                cell = new QTableWidgetItem; // Создаем новую ячейку таблицы
                cell->setText(word.at(columns)); // Устанавливаем текст ячейки из списка строк
                table->setItem(rows, columns, cell); // Задаем ячейку таблицы
            }
            rows++;
        }
    }
}

void Table::save() // Слот сохранения данных в файл
{
    QString filename = "E:\\Development\\Files\\Timetable.txt";
    QString bufer;

    //прохожу по всем строкам таблицы и сохраняю содержимое в буфер
    int rowCount = table->rowCount();//получаю количество строк

    for(int i = 0; i < rowCount; ++i)
    {
        //цикл по 4 столбцам
        for(int j =0; j < 4; j++)
        {
            QTableWidgetItem* cell = table->item(i,j); //выбираю ячейку
            bufer += cell->text() + ' '; //записываю в буфер значение ячейки и разделитель ';'
        }
    }

    QFile file(filename);
    if ( file.open(QIODevice::Append | QIODevice::Text))
    {
        QTextStream stream( &file );
        stream << bufer << endl;
        file.close();
    }
}

Table::~Table()
{
    
}
//main.cpp

Код:
#include <QtGui/QApplication>
#include "Table.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Table t;
    t.show();
    
    return a.exec();
}
Bitter_Schokolade вне форума Ответить с цитированием
Старый 20.12.2013, 07:07   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Возможно, в них надо выводить данные из QTime?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 20.12.2013, 11:53   #3
Bitter_Schokolade
Несчастный студент
Пользователь
 
Аватар для Bitter_Schokolade
 
Регистрация: 31.03.2013
Сообщений: 52
По умолчанию

Возможно, но как? В этом и ступор...
Bitter_Schokolade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Библиотеки для GUI и работы с Excel документами Armatus Qt и кроссплатформенное программирование С/С++ 2 09.06.2012 08:52
GUI для бд oracle MrBobyara SQL, базы данных 3 09.11.2011 11:16
GUI приложения. Работа с БД. Airou Помощь студентам 0 24.03.2011 15:43
Создание GUI для WINDOWS inzener-tolik Помощь студентам 8 13.03.2010 11:39