Подсказки на компьютерную тематику

Можно подсмотреть, если забыли…

Как на примере в Qt выбрать и открыть файл на компьютере с Ubuntu

Пример создания программы с выбором и подключением к файлу на компьютере с Ubuntu в программе Qt

    Для создания работающего кода для выбора и подключения к файлу программы на Qt следует:

  • создать проект, например openfileandclasses
  • в верхней части файла openfileandclasses.pro добавить код QT += sql для подключения работы с запросами SQL
  • в файле mainwindow.h в разделе class MainWindow : public QMainWindow прописать функцию для выбора и открытия содержимого файла
  • private slots:
    void openfile();// это созданный нами слот для выбора и открытия файла
  • файл main.cpp трогать не надо
  • в файле mainwindow.cpp добавить классы:
  • #include "QtGui"
    #include "QFileDialog"//для диалоговых окон
    #include "QSqlQuery"//для работы с SQL запросами
    #include "QTableView"//для работы с графическим выводом информации в виде таблиц
    #include "QSqlTableModel" //класс для работы с редактируемой одиночной таблицей из БД
    #include "QSqlRelationalTableModel" //класс для работы с редактируемой таблицей из БД с поддержкой внешних ключей
    #include "QSqlQueryModel" //класс для работы с таблицей только для чтения из БД для вывода SQL запросов
  • в функции MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) привязать эту функцию к кнопке pushButton_2:
  • connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(openfile())); //для выбора файла на компьютере
  • в конце файла прописать содержимое функции:
  • void MainWindow::openfile(){

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");// db - это внешняя глобальная переменная, которую можно использовать тво всех файлах программы
    QSqlTableModel *model = new QSqlTableModel; //создается глобальный объект модели таблицы с редактируемыми ячейками

    //открывает стандартное окно с файлами и можно выбрать нужный файл
    //в переменную file после выбора файла автоматически поместится его адрес
    QString file = QFileDialog::getOpenFileName(
    this,
    "Select one or more files to open",//заголовок открывающегося стандартного окна
    "/home");//каталог, который открывается при запуске
    //если прописать QDir :: currentPath (); то откроется каталог созданного приложения Qt с исполняемыми файлами программы
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName(file);
    //открывает базу данных по адресу file
    db.open();
    model->setTable("basetable");//выбирается существующая табл БД
    //Возможны значения для редактирования записей:
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);//настраивается редактирование таблицы
    //model->setEditStrategy(QSqlTableModel::OnFieldChange);//данные сохранятся в БД сразу при переходе на другую ячейку
    //model->setEditStrategy(QSqlTableModel::OnRowChange);//данные сохранятся в БД сразу при переходе на другую строку
    model->select();//заполняет модель данными из таблицы, без этого кода выйдет пустая таблица
    ui->tableView->setModel(model);//выводит в виде таблицы все элементы в окне приложения
    }

  • в файле mainwindow.ui создать виджеты, используемые в коде программы:
  • widget class=”QTableView” name=”tableView
  • widget class=”QPushButton” name=”pushButton_2” с надписью Выбрать файл БД и подключиться

Как на примере в Qt выбрать и открыть файл на компьютере с Ubuntu

Пример создания программы с выбором и подключением к файлу на компьютере с Ubuntu в программе Qt

    Для создания работающего кода для выбора и подключения к файлу программы на Qt следует:

  • создать проект, например openfileandclasses
  • в верхней части файла openfileandclasses.pro добавить код QT += sql для подключения работы с запросами SQL
  • в файле mainwindow.h в разделе class MainWindow : public QMainWindow прописать функцию для выбора и открытия содержимого файла
  • private slots:
    void openfile();// это созданный нами слот для выбора и открытия файла
  • файл main.cpp трогать не надо
  • в файле mainwindow.cpp добавить классы:
  • #include "QtGui"
    #include "QFileDialog"//для диалоговых окон
    #include "QSqlQuery"//для работы с SQL запросами
    #include "QTableView"//для работы с графическим выводом информации в виде таблиц
    #include "QSqlTableModel" //класс для работы с редактируемой одиночной таблицей из БД
    #include "QSqlRelationalTableModel" //класс для работы с редактируемой таблицей из БД с поддержкой внешних ключей
    #include "QSqlQueryModel" //класс для работы с таблицей только для чтения из БД для вывода SQL запросов
  • в функции MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) привязать эту функцию к кнопке pushButton_2:
  • connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(openfile())); //для выбора файла на компьютере
  • в конце файла прописать содержимое функции:
  • void MainWindow::openfile(){

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");// db - это внешняя глобальная переменная, которую можно использовать тво всех файлах программы
    QSqlTableModel *model = new QSqlTableModel; //создается глобальный объект модели таблицы с редактируемыми ячейками

    //открывает стандартное окно с файлами и можно выбрать нужный файл
    //в переменную file после выбора файла автоматически поместится его адрес
    QString file = QFileDialog::getOpenFileName(
    this,
    "Select one or more files to open",//заголовок открывающегося стандартного окна
    "/home");//каталог, который открывается при запуске
    //если прописать QDir :: currentPath (); то откроется каталог созданного приложения Qt с исполняемыми файлами программы
    //подключить БД по ее адресу на компьютере
    db.setDatabaseName(file);
    //открывает базу данных по адресу file
    db.open();
    model->setTable("basetable");//выбирается существующая табл БД
    //Возможны значения для редактирования записей:
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);//настраивается редактирование таблицы
    //model->setEditStrategy(QSqlTableModel::OnFieldChange);//данные сохранятся в БД сразу при переходе на другую ячейку
    //model->setEditStrategy(QSqlTableModel::OnRowChange);//данные сохранятся в БД сразу при переходе на другую строку
    model->select();//заполняет модель данными из таблицы, без этого кода выйдет пустая таблица
    ui->tableView->setModel(model);//выводит в виде таблицы все элементы в окне приложения
    }

  • в файле mainwindow.ui создать виджеты, используемые в коде программы:
  • widget class=”QTableView” name=”tableView
  • widget class=”QPushButton” name=”pushButton_2” с надписью Выбрать файл БД и подключиться