Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Ruslan от Апрель 03, 2018, 11:44



Название: Передача параметров между окнами
Отправлено: Ruslan от Апрель 03, 2018, 11:44
День добрый! Возможно ли передавать параметры из одного окна ui через глобальную переменную по типу STATIC в другое окно ui, при этом окна ui находятся в разных файлах.
Спасибо!


Название: Re: Передача параметров между окнами
Отправлено: qate от Апрель 03, 2018, 14:50
а сразу себе в ногу выстрелить, не ?
сигналы и слоты ведь для этого придумали



Название: Re: Передача параметров между окнами
Отправлено: Ruslan от Апрель 03, 2018, 16:31
не знал, что это равносильно стрельбе в себя)...я только учусь...т.е. параметры из одного файла в другой нужно передавать с помощью сигнально-слотового соединения?


Название: Re: Передача параметров между окнами
Отправлено: qate от Апрель 03, 2018, 17:21
да, ибо сразу потокобезопасно


Название: Re: Передача параметров между окнами
Отправлено: Igors от Апрель 04, 2018, 12:45
а сразу себе в ногу выстрелить, не ?
сигналы и слоты ведь для этого придумали
да, ибо сразу потокобезопасно
Мда, ответики те еще :) Между тем слот-сигнал - штука довольно спорная, может лучше сначала научиться рисовать геттеры и статики?


Название: Re: Передача параметров между окнами
Отправлено: qate от Апрель 04, 2018, 17:04
в чем спорность ?
сигнал слот хуже статической переменной к которой еще и мутекс нужен ?


Название: Re: Передача параметров между окнами
Отправлено: Ruslan от Апрель 04, 2018, 17:32
что такое мутекс?


Название: Re: Передача параметров между окнами
Отправлено: Ruslan от Апрель 04, 2018, 17:38
Мда, ответики те еще :) Между тем слот-сигнал - штука довольно спорная, может лучше сначала научиться рисовать геттеры и статики?
[/quote]
так можно передать параметры из одного файла в другой?
т.е. предположим проект состоит из 3 окон и дерево проекта имеет следующие файлы:
window1.h
window2.h
window3.h

window1.cpp
window2.cpp
window3.cpp

window1.ui
window2.ui
window3.ui

при вызове window2 из window1 мне надо понять какая именно кнопка его вызвала и следовательно передать параметр для window2


Название: Re: Передача параметров между окнами
Отправлено: Авварон от Апрель 04, 2018, 19:13
Можно, я не против:)


Название: Re: Передача параметров между окнами
Отправлено: qate от Апрель 05, 2018, 08:51
при вызове window2 из window1 мне надо понять какая именно кнопка его вызвала и следовательно передать параметр для window2

задай вопрос правильно, как и изначальный


Название: Re: Передача параметров между окнами
Отправлено: Ruslan от Апрель 05, 2018, 09:50
Можно, я не против:)

Вы не против, спасибо), а система?, такой подход правильный или я опять самоубийством занимаюсь?


Название: Re: Передача параметров между окнами
Отправлено: Ruslan от Апрель 05, 2018, 09:52
при вызове window2 из window1 мне надо понять какая именно кнопка его вызвала и следовательно передать параметр для window2

задай вопрос правильно, как и изначальный


к сожалению я путаюсь в терминах и мне тяжело задавать правильно вопрос, для меня разницы между первым вариантом и вторым, когда продемонстрировал дерево проекта - нет, и я не понимаю в чем не правильность(((...объясните...буду рад понять!!!


Название: Re: Передача параметров между окнами
Отправлено: Ruslan от Апрель 05, 2018, 10:29
Ещё один вариант вопроса: "Как передать параметры, или каким способом, из одного окна ui в другое окно ui, при этом окна ui находятся в разных файлах".


Название: Re: Передача параметров между окнами
Отправлено: ViTech от Апрель 05, 2018, 12:01
Ruslan, какие-то неприличные вопросы вы задаёте :). Вряд ли кто тут будет разжёвывать азы работы с Qt или объяснять значения терминов, которые гуглятся за 10 секунд. Читайте документацию (http://doc.qt.io/) (Signals & Slots (http://doc.qt.io/qt-5/signalsandslots.html)), изучайте примеры (http://doc.qt.io/qt-5/qtexamplesandtutorials.html). В общем, как говорится, RTFM :).

Ещё один вариант вопроса: "Как передать параметры, или каким способом, из одного окна ui в другое окно ui, при этом окна ui находятся в разных файлах".

В одном окне делаете сигнал, который будет отправлять параметр, во втором окне делаете слот, который будет принимать параметр. В месте кода, в котором создаёте эти окна, связываете сигнал со слотом. БОльшая часть работы с сигналами/слотами происходит в коде, нежели в Qt Designer (ui-файлах соответственно).


Название: Re: Передача параметров между окнами
Отправлено: Igors от Апрель 05, 2018, 12:01
Руслан, спрашивать на форуме надо только ПОСЛЕ чтения документации Qt. Вы не первый и не последний кто пытается делать наоборот - ну и, как всегда, ничего доброго не выходит.

Откройте букварь, найдите класс Вашей кнопки (QPushButton) и сигналы что он испускает (насколько помню Вам нужен clicked). Почитайте (или хотя бы посмотрите) как связывать слот-сигнал. И.т.д. Поверьте - быстрее не будет. Работать пересказчиком букваря никто не хочет (и это правильно).


Название: Re: Передача параметров между окнами
Отправлено: Ruslan от Апрель 05, 2018, 12:11
читал...пробовал...выходят ошибки...поэтому и пишу вопросы...всё что гуглится не помогает...сигналы и слоты создавал и проблем нет всё работает, вся проблема когда добавляю параметры...происходят одни ошибки...документация вся на английском а переводчики гугла или яндекса не помогают а путают...я понимаю, что для Вас это всё забавно, но для меня нет ни корректных вопросов пока я не пойму, что они не корректные!!!
Вы не правы, задаю вопросы в последнюю очередь, прочитал всё по этим классам и началу работы с QT но ни где нет примеров передачи параметров, если поделитесь ссылкой которую вы считаете исчерпывающей при прочтении, буду благодарен.
Последний тупой вопрос: Может быть такое, что программа установилась не корректно либо в настройках не проставлена какая-нибудь галка из-за которой не срабатывает?!  


Название: Re: Передача параметров между окнами
Отправлено: ViTech от Апрель 05, 2018, 13:10
Последний тупой вопрос: Может быть такое, что программа установилась не корректно либо в настройках не проставлена какая-нибудь галка из-за которой не срабатывает?! 
Вряд ли, должно работать нормально.

Вы не правы, задаю вопросы в последнюю очередь, прочитал всё по этим классам и началу работы с QT но ни где нет примеров передачи параметров, если поделитесь ссылкой которую вы считаете исчерпывающей при прочтении, буду благодарен.

Во вложении проект, набросал на скорую руку, надеюсь принцип будет понятен.


Название: Re: Передача параметров между окнами
Отправлено: Ruslan от Апрель 05, 2018, 13:36
ViTech, СПАСИБО!!!


Название: Re: Передача параметров между окнами
Отправлено: Ruslan от Апрель 06, 2018, 11:00
Во вложении проект, набросал на скорую руку, надеюсь принцип будет понятен.

не получилось(((...
наверное, всё таки что-то с программой, может версия старая...такие ошибки я уже видел...


Название: Re: Передача параметров между окнами
Отправлено: ViTech от Апрель 06, 2018, 11:22
Попробуйте старый тип соединения:
Код
C++ (Qt)
   connect(m_form1, SIGNAL(sendParameter(QString, int)),
           m_form2_1, SLOT(receiveParameter(QString, int)));
   connect(m_form1, SIGNAL(sendParameter(QString, int)),
           m_form2_2, SLOT(receiveParameter(QString, int)));
 

И напишите, какая у вас установлена версия Qt, какой компилятор и какой версии используется.


Название: Re: Передача параметров между окнами
Отправлено: Ruslan от Апрель 06, 2018, 12:31
ViTech, очень благодарен, не знаю как ещё выразить - благодарность!!! заработало!!! значит у меня старая версия?! компилятор GCC


Название: Re: Передача параметров между окнами
Отправлено: ViTech от Апрель 06, 2018, 12:44
Версия Qt хоть и не самая свежая, но новый тип соединения должна поддерживать. Но это ещё от возможностей компилятора зависит. Версию компилятора можно посмотреть в консоли с помощью команды "g++ --version".