71 / 51 / 8
Регистрация: 13.11.2017
Сообщений: 372
1

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

14.11.2018, 13:58. Показов 1462. Ответов 1
Метки нет (Все метки)

Добрый день. Есть такое задание:
Составить программу, в которой будет реализована работа с таблицей по варианту. Для работы пользователя с таблицей будет использоваться графический интерфейс. При реализации интерфейса должен быть реализован подход Model-View-Controller.
Я выполнил это задание, всё работает как нужно. Таблицу заполнил нужными строками. Можно добавлять строки в конец, по середине и удалять их. Вот мой код:

Файл mainwindow.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QStandardItemModel>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
private slots:
    void on_pushButton_clicked();
 
    void on_pushButton_2_clicked();
 
    void on_pushButton_3_clicked();
 
private:
    Ui::MainWindow *ui;
    QStandardItemModel *model;
};
 
#endif // MAINWINDOW_H
Файл mainwindow.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <iostream>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    model = new QStandardItemModel(3, 4, this);
    ui->tableView->setModel(model);
 
    QModelIndex index;
    // 1-ая строка
    index = model->index(0,0);
    model->setData(index, "Баландин");
    index = model->index(0,1);
    model->setData(index, "C");
    index = model->index(0,2);
    model->setData(index, 123.7);
    index = model->index(0,3);
    model->setData(index, 2);
 
    // 2-ая строка
    index = model->index(1,0);
    model->setData(index, "Шишков");
    index = model->index(1,1);
    model->setData(index, "Ш");
    index = model->index(1,2);
    model->setData(index, 79.98);
    index = model->index(1,3);
    model->setData(index, 3);
 
    // 3-ья строка
    index = model->index(2,0);
    model->setData(index, "Кравченко");
    index = model->index(2,1);
    model->setData(index, "Д");
    index = model->index(2,2);
    model->setData(index, 134.8);
    index = model->index(2,3);
    model->setData(index, 1);
    /*for (int row = 0; row < model->rowCount(); ++row)
    {
        for (int col = 0; col < model->columnCount(); ++col)
        {
            index = model->index(row, col);
            model->setData(index, "Сидоров");
        }
    }*/
    model->setHeaderData(0, Qt::Horizontal, "Фамилия участника");
    model->setHeaderData(1, Qt::Horizontal, "Код команды");
    model->setHeaderData(2, Qt::Horizontal, "Количество балов");
    model->setHeaderData(3, Qt::Horizontal, "Место в итоге");
 
    ui->comboBox->setModel(model);
    ui->tableView->setEditTriggers(QAbstractItemView::AnyKeyPressed | QAbstractItemView::DoubleClicked);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
    //add
    int row = model->rowCount();
    model->insertRows(row, 1);
 
    QModelIndex in = model->index(row, 1);
    ui->tableView->setCurrentIndex(in);
    ui->tableView->edit(in);
}
 
void MainWindow::on_pushButton_2_clicked()
{
    //insert
 
    int row = ui->tableView->currentIndex().row();
    model->insertRows(row, 1);
 
    QModelIndex in = model->index(row, 1);
    ui->tableView->setCurrentIndex(in);
   //ui->tableView->edit(in);
 
}
 
void MainWindow::on_pushButton_3_clicked()
{
    //del
    model->removeRows(ui->tableView->currentIndex().row(),1);
}
Но мне сказали сделать модель через класс. То есть создать класс, в котором будут храниться поля исходных значений и тп.
Вот я создал класс:
Файл sport.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#ifndef SPORT_H
#define SPORT_H
#include <QString>
 
class Sport
{ public:
    Sport ();
    Sport (QString name, QString code);
    Sport (const Sport& v);
    Sport& operator= (const Sport&);
 
    QString name () const;
    QString code () const;
    float ball () const;
    int mesto () const;
 
    void setName (QString name);
    void setCode (QString code);
    void setMesto (int m);
    void setBall (float b);
 
private:
    QString Name, Code;
    float Ball;
    int Mesto;
};
#endif // SPORT_H
Файл sport.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "sport.h"
Sport::Sport():
    Ball(0.0), Mesto(0)
{
}
Sport::Sport(QString name, QString code):
    Name(name), Code(code), Ball(0.0), Mesto(0)
{
}
Sport::Sport(const Sport &v)
{
    this->Name = v.Name;
    this->Code = v.Code;
    this->Ball = v.Ball;
    this->Mesto = v.Mesto;
}
Sport &Sport::operator =(const  Sport &v)
{
    this->Name = v.Name;
    this->Code = v.Code;
    this->Ball = v.Ball;
    this->Mesto = v.Mesto;
    return *this;
}
QString Sport::name() const
{
    return Name;
}
QString Sport::code() const
{
    return Code;
}
float Sport::ball() const
{
    return Ball;
}
int Sport::mesto() const
{
    return Mesto;
}
 
void Sport::setName(QString name)
{
    this->Name = name;
}
void Sport::setCode(QString code)
{
    this->Code = code;
}
void Sport::setBall(float b)
{
    this->Ball = b;
}
void Sport::setMesto(int m)
{
    this->Mesto = m;
}
Понял, что можно сделать с использованием этого http://doc.qt.io/archives/qt-4.8/modelview.html Но как это всё реализовать и связать? Ничего не выходит. Подскажите, пожалуйста.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2018, 13:58
Ответы с готовыми решениями:

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

Написать программу, в которой будет реализована процедура вычисления количества строк двумерного массива
Написать программу, в которой будет реализована процедура вычисления количества строк двумерного...

Написать программу, с помощью которой изображение будет разбиваться по пикселям и будет создаваться матрица
помогите пожалуйста, очень нужна помощь! нужно написать программу, с помощью которой изображение...

Управление таблицей с сообщениями для каждого пользователя
Есть таблица с пользователями, и таблица с сообщениями. Эти сообщения показываются всем...

1
7169 / 6143 / 2803
Регистрация: 14.04.2014
Сообщений: 26,471
14.11.2018, 14:12 2
Всё равно нужно на основе стандартной делать. Бери QAbstractTableModel.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2018, 14:12
Помогаю со студенческими работами здесь

создать программу, в которой нажатием кнопки осуществляется заполнение таблицы таблицей умножения
создать программу, в которой нажатием кнопки осуществляется заполнение таблицы таблицей умножения,...

Компонент для работы с таблицей
В этом Битриксе даже нет нормального компонента для работы с таблицей. Он ужасен! Скажите, если тут...

Создать меню для работы с таблицей
Нужно сделать меню с пунктами 1)создать таблицу 2)вывести таблицу 3)поиск пункта по какому либо...

Создать процедуру для работы с переменной таблицей
Здравствуйте. Я написал макрос для работы с встроенными таблицами. Однако я рассмотрел только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru