#include "fsinglegrid.h" #include "ui_fsinglegrid.h" #include #include #include FSingleGrid::FSingleGrid(QWidget *parent) : QWidget(parent), ui(new Ui::FSingleGrid) { ui->setupUi(this); } FSingleGrid::~FSingleGrid() { delete ui; } QTableWidget* FSingleGrid::tableWidget() const { return ui->sg; } void FSingleGrid::initForm(QString aBlockName, QString aNewName, bool btnOpen) { ui->groupBox->setTitle(aBlockName); QStringList headers; headers << "Название" << "Файл"; ui->sg->setHorizontalHeaderLabels(headers); ui->sg->setSelectionBehavior(QAbstractItemView::SelectRows); // Выделение строк ui->sg->setSelectionMode(QAbstractItemView::SingleSelection); // Одиночное выделение ui->sg->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->sg->setColumnWidth(0, 100); ui->sg->setColumnWidth(1, 170); ui->sg->setObjectName(aNewName); ui->btnOpen->setVisible(btnOpen); } void FSingleGrid::toGrid(QString aName, QString aFile) { // Добавляем новую строку в таблицу int row = ui->sg->rowCount(); ui->sg->insertRow(row); QTableWidgetItem *R1 = new QTableWidgetItem(aName); QTableWidgetItem *R2 = new QTableWidgetItem(aFile); ui->sg->setItem(row, 0, R1); ui->sg->setItem(row, 1, R2); ui->sg->scrollToBottom(); } void FSingleGrid::on_btnAdd_clicked() { toGrid(ui->edtName->text(), ui->edtFileName->text()); db->SaveTableWidget(ui->sg); } void FSingleGrid::setDatabase(uDataBase *database) { db = database; } void FSingleGrid::on_btnDel_clicked() { // Проверяем, есть ли выделенная строка if (!ui->sg->currentItem()) { QMessageBox::warning(this, "Внимание", "Выберите строку для удаления!"); return; } // Получаем индекс выделенной строки int row = ui->sg->currentItem()->row(); // Удаляем строку ui->sg->removeRow(row); db->SaveTableWidget(ui->sg); } void FSingleGrid::on_btnEdt_clicked() { // Проверяем, есть ли выделенная строка if (!ui->sg->currentItem()) { QMessageBox::warning(this, "Внимание", "Выберите строку для редактирования!"); return; } // Получаем индекс выделенной строки int row = ui->sg->currentItem()->row(); // Получаем данные из выбранной строки ui->sg->item(row, 0)->setText(ui->edtName->text()); ui->sg->item(row, 1)->setText(ui->edtFileName->text()); db->SaveTableWidget(ui->sg); } void FSingleGrid::on_btnOpen_clicked() { // Диалог выбора файла QString fileName = QFileDialog::getOpenFileName( this, // родительское окно "Выберите файл", // заголовок окна QDir::homePath(), // начальная директория "Все файлы (*.*);;" // фильтры файлов "Текстовые файлы (*.txt);;" "Аудио (*.mp3);;" "Приложения (*.exe *.bat *.cmd)" ); // Если файл выбран (не нажата кнопка "Отмена") if (!fileName.isEmpty()) { // Записываем путь к файлу в поле ввода ui->edtFileName->setText(fileName); // Опционально: автоматически заполняем поле имени из названия файла if (ui->edtName->text().isEmpty()) { QFileInfo fileInfo(fileName); QString baseName = fileInfo.baseName(); // Имя файла без расширения ui->edtName->setText(baseName); } } } void FSingleGrid::on_sg_cellClicked(int row, int column) { ui->edtName->setText(ui->sg->item(row,0)->text()); ui->edtFileName->setText(ui->sg->item(row,1)->text()); }