Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Qt / Лабораторная №2

.docx
Скачиваний:
2
Добавлен:
27.11.2023
Размер:
36 Кб
Скачать

Цель работы: описать исходного кода программы To Do List.

Ход работы

Добавление методов, кнопок в главный класс.

class TDLMainWindow : public QMainWindow

{

Q_OBJECT

public:

TDLMainWindow(QWidget* parent = nullptr);

~TDLMainWindow();

private slots:

void onAdd();

void onRemove();

private:

Ui::TDLMainWindow* ui;

QStringListModel* model_1 = nullptr; //Класс QStringListModel предоставляет модель, которая предоставляет строки

QStringListModel* model_2 = nullptr;

QSettings* settings;

QAction* m_pActAdd = nullptr;

QAction* m_pActRemove = nullptr;

};

Восстановления геометрии окна через обращение классу QT QSettings.

QSettings s;

restoreGeometry(s.value("ToDoList", QByteArray()).toByteArray());

restoreState(s.value("GP", QByteArray()).toByteArray());

Перенаправление элементов из формы функции QT.

ui->listView->setModel(model_1); // Склеиваем модель и вид вместе

ui->listView->setEditTriggers(QAbstractItemView::AnyKeyPressed| QAbstractItemView::DoubleClicked); //добавление дополнительных функциий в список.

ui->listView->setDragDropMode(QAbstractItemView::DragDrop); //вкл функции DragDrop

ui->listView->setDefaultDropAction(Qt::MoveAction); //действие по умолчанию

ui->listView->setDragEnabled(true);

ui->listView->setAcceptDrops(true);

Открытие файла

QFile textFile(":/resources/Data.txt");

if (!textFile.open(QIODevice::ReadOnly)) {

QMessageBox::information(0, "Error", textFile.errorString());

}

Тестовый поток для чтения из файла

QTextStream textStream(&textFile);

while (true)

{

QString line = textStream.readLine();

if (line.isNull())

break;

else

stringList_1.append(line);

}

Заполнение модели

model_1->setStringList(stringList_1);

Панель инструментов.

QToolBar* pToolBar = new QToolBar(this);

addToolBar(pToolBar);

m_pActAdd = new QAction(this);

Загрузка иконок панели инструментов из ресурсов.

m_pActAdd->setIcon(QIcon(":/resources/add.png"));

connect(m_pActAdd, &QAction::triggered, this, &TDLMainWindow::onAdd);

m_pActRemove = new QAction(this);

m_pActRemove->setIcon(QIcon(":/resources/remove.png"));

connect(m_pActRemove, &QAction::triggered, this, &TDLMainWindow::onRemove);

pToolBar->addAction(m_pActAdd);

pToolBar->addAction(m_pActRemove);

}

Кнопка добавить. Добавление строк в лист методами QT (insertRows(row, 1)).

void TDLMainWindow::onAdd()

{

int row = model_1->rowCount();

model_1->insertRows(row, 1);

QModelIndex index = model_1->index(row);

ui->listView->setCurrentIndex(index);

ui->listView->edit(index);

}

Удаления задач (строк).

void TDLMainWindow::onRemove()

{

model_1->removeRows(ui->listView->currentIndex().row(), 1);

}

Сохранения геометрии окна после закрытии приложения, с помощью деструктора.

TDLMainWindow::~TDLMainWindow()

{

QSettings s; //запись геометрии окна после закрытия

s.setValue("GP", saveState());

s.setValue("ToDoList", saveGeometry());

delete ui;

}

Вывод: в ходе лабораторной работы описали исходный кода программы.

Соседние файлы в папке Qt