M
MadBear54121 березня 2017 р. 00:33
передать результат запроса sql в другую форму
Подскажите как передать переменную QString в которой хранится результат Sql запроса в другую форму. И как в QComboBox передавать значение из таблицы одной формы, в ней данные заполняются по QSqlQueryModel чтоб сохранялось выбранное значение, так же надо чтоб вообще можно было выбирать любые поля ( это я реализовал).
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.Вам це подобається? Поділіться в соціальних мережах!
AD
- Akiv Doros
- 11 листопада 2024 р. 14:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50бали,
- Рейтинг балів-4
m
- molni99
- 26 жовтня 2024 р. 01:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80бали,
- Рейтинг балів4
m
- molni99
- 26 жовтня 2024 р. 01:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20бали,
- Рейтинг балів-10
Останні коментарі
ИМ
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Игорь Максимов22 листопада 2024 р. 11:51
Evgenii Legotckoi31 жовтня 2024 р. 14:37
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь Максимов05 жовтня 2024 р. 07:51
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Evgenii Legotckoi24 червня 2024 р. 15:11
t
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
tonypeachey115 листопада 2024 р. 06:04
NSProject04 червня 2022 р. 03:49
IscanderChe31 жовтня 2024 р. 15:43
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
Если есть некая абстрактная переменная QString , допустим m_string . То для передачи в другую форму, допустим это будет поле QLineEdit, поскольку слишком абстрактно вы сформулировали это понятие. Нужно сделать так:
Ну а у QComboBox нужно использовать метод addItem()
А под сохранением выбранного значения, вообще не ясно, что вы подразумевали конкретно.
Слишком абстрактный вопрос, без конкретизации деталей ...
есть QString idrn - в не ложу стринговое значение результата sql запроса, то есть например idrn принимает значение Первомайский - имя района. мне теперь необходимо чтоб в другой форме по двойному клику в первой получал в QComboBox - который делает выборку из базы и предлагает имена районов. саму выборку я реализовал:
где rayn - имя QComboBox. Так же мне надо для формирования sql запроса в форме два использовать значение idrn и еще пару аналогичных. я пытался сделать с использованием сигнала, но не вышло. Сам я в программировании подобного уровня новичок, по сути вообще ноль.Если эта форма является таблицей, то бишь QTableView , то используйте сигнал doubleClicked , который вернёт QModelIndex, который будет указывать на текущую ячейку. А далее уже забираете данные из ячейки и кидаете их в QComboBox. Посмотрите статью по QDataWidgetMapper , там как раз используется сигнал doubleClicked .
Если же подразумевается поле ввода, наподобие QLineEdit, то нужно наследоваться от этого класса и переопределять метод mouseDoubleClickEvent() . Вот в этом топике есть пример перегрузки. Сделаете в наследованном классе сигнал, который передаст значение, поймайте этот сигнал и установите его в QComboBox.
по статье QDataWidgetMapper и делал. Не передает он значение. И вопрос с передачей переменных все равно остается открытым.
Ну так показывайте код, как делали формы, как пытались передать значение. Или я должен догадываться, что вы там понаписали, по одной только фразе "Не передает он значение" ? - Телепаты в отпуске.
выше я уже приводил код в котором формируется модель для данных в QComboBox. При открытии формы в QComboBox выводится запись с индексом 1, т.е. самая первая, а не выбранная в предыдущем окне. Вот код из первой формы, для формирования данных и их передачи:
Вот в этом коде вы выставляете mapper на самую первую позицию:
Mapper дёргает сразу всю таблицу, попробуйте выставлять нужную текущую строку через метод setCurrentIndex() или setCurrentModelIndex(). И ещё один такой момент для общего развития: QSqlQueryModel работает только на чтение, на запись она не работает. Просто помните про этот момент, когда будете с ней работать. Поэтому попытайтесь использовать QSqlRelationalTableModel, вместо QSqlQueryModel.
Дату и номер распоряжений можно выдернуть сразу из модели, задав соответствующую колонку в методе data() без каких-либо дополнительных запросов к базе данных через QSqlQuery.
Не уверен, когда ваш проблема пофиксится, но прежде чем до неё добраться, придётся поправить очень многие моменты, пока плаваете в методах моделей и дёргаете данные сырыми SQL запросами будет очень трудно фиксить те баги, которые создаёте.
Постарайтесь сейчас поправить те моменты, на которые я указал во всём коде.
Также сам проект ужасно организован. Директории obj и redit нужно как минимум перенести внутрь arhon. Либо сделать отдельным подключаемыми pri проектами.
Касательно QSqlRelationalTableModel и QSqlQueryModel - я в курсе, я их оба использую, что бы не позволять пользователю редактировать таблицы . Что же касается методов с использованием CurrentIndex тут я плаваю жутко. Как понять сырые SQL запросы? Что же касается даты и номера, спасибо что указали на ошибку. Тем более что метод data() я уже использовал. Касательно организации проекта, я сделал так для удобства работы с директорией проекта. в конце я это подправлю. У меня все также остается большой вопрос как организовать передачу номера и даты распоряжения в другую форму. Не хочу делать в каждой форме выборки из базы, а передовать их сквозь все необходимые формы. Вообще по проекту скажу - я в написании программ новичок и багов много. К сожалению у меня нет наставников и поэтому учусь по методу " Обезьяна с гранатой"
Под сырым SQL запросом я подразумеваю вот это:
Вы в обоих случаях дёргаете данные из таблицы "op", причём и id получаете из этой же таблицы. Если я правильно понял код, то можно сделать проще и менее чувствительно к ошибкам (ошибки в записи SQL запросов иногда не так просто заметить, к сожалению):
Чтобы передать эти значения в другую форму (теперь хоть стало понятно, что это отдельные диалоговые окна), можно сделать сигнал или принимающий метод, в котором будут нужные методы. В вашем случае есть диалог redit . Ну и добавьте в него метод setParamters(indr, rnum, rdat)
Тогда можно будет сделать что-то типо такого:
Идея примерно такая, поразбирайте её.
Структуру проекта лучше сразу поправить.
Значит я правильно понял про запросы. Спасибо что подсказали с передачей данных в другое окно я пробовал делать через emit sendData но к сожалению понял что не подходит этот метод. Буду причесывать запросы и разбираться с CurrentIndex() . Спасибо за консультацию
Но это не готовый рабочий код - это идея. Я подробно не разбирался в том, что вы написали и не вникал в смысл таблиц, тем более, что без базы данных такие баги фиксить дело неблагодарное. Поэтому поразмышляйте над этим кодом что я привёл в качестве возможного варианта.