Russian Qt Forum
Ноябрь 27, 2024, 07:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Множественный выбор  (Прочитано 2598 раз)
Somni
Новичок

Offline Offline

Сообщений: 29


Просмотр профиля
« : Ноябрь 05, 2018, 15:33 »

Всем привет!
Нужно выбрать несколько лекарств из предложенного списка и их добавить в заказ (n insert into в таблицу состав заказа, где n количество выбранных лекарств). Список лекарств предоставляется выборкой из БД. Я сделал выборку в listView. Сделал сбор полученных данных, но получается забрать только последний выбранный препарат из listView. А мне нужно, чтобы пользователь мог выбрать сразу несколько, а не один, препарат. Может что иное использовать нежели listView. Препаратов в списке может быть штук 500, нужно компактно вывести с лифтом и предоставить возможность множественного выбора. Потом это нужно прочитать и передать мне в код строки, кои пользователь выбрал и нажал кнопку добавить в корзину.
Спасибо за ответы!

Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "pharmacy_orders.h"
#include <QtSql>
#include <QStandardItemModel>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QSqlQuery query;
    query.exec("SELECT Название FROM Лекарства");
    QStringList sequence_len;
    QStandardItemModel *model = new QStandardItemModel;//новая модель списка
    QStandardItem *item;//элемент списка
    while (query.next())
    {
        item = new QStandardItem(query.value(0).toString());
        model->appendRow(item);
    }
    //Cоединение модели списка с конкретным списком
    ui->listView->setModel(model);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QString Result;//Итоговый результат

        QModelIndexList selectedIndexes = ui->listView->selectionModel()->selectedIndexes();
        QStringList selectedTexts;//в теории может быть несколько выделенных пунктов списка

        //пробегаем по всем элементам списка
        foreach(const QModelIndex &idx, selectedIndexes)
        {
            selectedTexts << idx.data(Qt::DisplayRole).toString();//выдергиваем наименования значений списка
        }

        Result=selectedTexts.join(',');//соединяем все найденные элементы

        //используем результат
        qDebug() << Result;
    /*
    Pharmacy_orders po;
    po.setModal(true);
    po.exec();
    */
}
« Последнее редактирование: Ноябрь 05, 2018, 15:36 от Somni » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Ноябрь 05, 2018, 17:27 »

Если хочется добавить несколько строк в 1 запросе, то это, вроде как делается через обособление
Код:
insert into table (column)
values
(val1),
(val2),
(val3)
http://www.sqlitetutorial.net/sqlite-insert/
Записан
Somni
Новичок

Offline Offline

Сообщений: 29


Просмотр профиля
« Ответ #2 : Ноябрь 05, 2018, 18:11 »

Мне это известно, INSERT INTO ... VALUES ... Но чтобы добавить несколько строк, для них нужно подготовить информацию, в частности - ответ пользователя, какие лекарства идут в корзину и в каком количестве. Это у меня на данный момент не получилось исполнить в кодовом представлении.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Ноябрь 06, 2018, 11:35 »

Я понял, что уже всё почти готово
Код
C++ (Qt)
Result=selectedTexts.join(',');//соединяем все найденные элементы
 
Достаточно привести в удобный для запроса вид:
Код
C++ (Qt)
SQL = "insert into table (column) values ('" + selectedTexts.join("'), ('") + "')";
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.085 секунд. Запросов: 22.