Название: Передача данных с одной формы на другую Отправлено: kadr от Январь 18, 2010, 11:15 Привет всем, помогите разобраться с проблемой, есть отчет, который нужно сформировать за определенный период. Действия- при нажатии на кнопку должно происходить следующее:
1. Выходить окно с выбором даты начала и конца поиска 2. после нажатия на кнопку ок, это окно закрывается и открывается окно с отчетом Что удалось: 1. Создал форму выбора периода и форму с отчетом 2. Закрытие формы выбора даты Что надо: 1. Что бы с формы выбора периода,при нажатии на кнопку, обе даты передавались в запрос для формирования отчета. Не удается сделать так, что бы после нажатия на кнопку Ок, открывалась форма отчета, и соответственно не передаются даты! Сообщение компилятора: QObject::connect: Incompatible sender/receiver arguments QToolButton::clicked() --> nozologia::pp1(QDateEdit*,QDateEdit*) Код: void nozologia::on_pp1_triggered() Название: Re: Передача данных с одной формы на другую Отправлено: Akaiten от Январь 18, 2010, 11:39 Код
Так работать не будет, поэтому и выдаётся сообщение. У слота параметры должны совпадать с параметрами сигнала или по крайней мере могут использоваться только N-первых параметров сигнала. Вот цитата документации: Цитировать The signature of a signal must match the signature of the receiving slot. (In fact a slot may have a shorter signature than the signal it receives because it can ignore extra arguments.) Нет необходимости передавать даты в качестве параметров слота. Добавьте public методы в класс окна с выбором даты для получения введённых значений и вызывайте их, например, после exec() или в слоте на сигнал при закрытии этого окна, ну или раз вы сами создаёте элементы интерфейса, то на крайний случай date_s и date_po можно объявить в классе как public. Название: Re: Передача данных с одной формы на другую Отправлено: kadr от Январь 18, 2010, 12:16 Как мне в заголовочном файле указать, что QDateEdit *date_s; и QDateEdit *date_po; являются наследниками QWidget *date_vvod;
Я их добавил в public, но теперь при запуске программы вылетает виндовая ошибка! Название: Re: Передача данных с одной формы на другую Отправлено: BlackTass от Январь 18, 2010, 12:35 Как мне в заголовочном файле указать, что QDateEdit *date_s; и QDateEdit *date_po; являются наследниками QWidget *date_vvod; В смысле наследниками? вы имеете в виду кутешный parent? никак, да и зачем вам это?Я их добавил в public, но теперь при запуске программы вылетает виндовая ошибка! Я бы не советовал в паблик выносить члены. Вам это все равно не нужно, так как все в одном объекте происходит. Ошибка скорее всего из-за того что у вас уже удаляются объекты с датами, когда вы к ним обращаетесь. Почему бы не сделать отдельный класс с диалогом и общаться с ним через геттеры или через свои сигналы (которые уже будут отдавать две даты)? Название: Re: Передача данных с одной формы на другую Отправлено: kadr от Январь 18, 2010, 14:17 Как мне в заголовочном файле указать, что QDateEdit *date_s; и QDateEdit *date_po; являются наследниками QWidget *date_vvod; В смысле наследниками? вы имеете в виду кутешный parent? никак, да и зачем вам это?Я их добавил в public, но теперь при запуске программы вылетает виндовая ошибка! Я бы не советовал в паблик выносить члены. Вам это все равно не нужно, так как все в одном объекте происходит. Ошибка скорее всего из-за того что у вас уже удаляются объекты с датами, когда вы к ним обращаетесь. Почему бы не сделать отдельный класс с диалогом и общаться с ним через геттеры или через свои сигналы (которые уже будут отдавать две даты)? Название: Re: Передача данных с одной формы на другую Отправлено: BlackTass от Январь 18, 2010, 23:01 А может можно сделать все намного проще, я не совсем понимаю как это сделать! Вариант с отдельным диалогом пожалуй наиболее простой. Потом в случае изменения чего-нибудь будет гораздо проще с отдельным диалогом. Плюс возможно понадобится его реюз вам где-нибудь и опять же не придется делать копи-пейст.Название: Re: Передача данных с одной формы на другую Отправлено: kadr от Январь 19, 2010, 11:12 А может можно сделать все намного проще, я не совсем понимаю как это сделать! Вариант с отдельным диалогом пожалуй наиболее простой. Потом в случае изменения чего-нибудь будет гораздо проще с отдельным диалогом. Плюс возможно понадобится его реюз вам где-нибудь и опять же не придется делать копи-пейст.И исходя из этого у меня есть еще один вопрос, как отследить нажатие правой кнопки мыши на динамически созданном окне, это мне нужно для того что бы создать контекстное меню! Название: Re: Передача данных с одной формы на другую Отправлено: Akaiten от Январь 19, 2010, 11:31 Судя по документации можно попробовать через setContextMenuPolicy(Qt::CustomContextMenu) и отслеживать сигнал customContextMenuRequested ( const QPoint & pos ). А чтобы отслеживать нажатия мыши обычно необходимо унаследовать исходный класс и переопределить один из обработчиков событий от мыши (mousePressEvent, mouseReleaseEvent, mouseDoubleClickEvent, mouseMoveEvent). Для работы с контекстным меню можно переопределить метод contextMenuEvent.
Название: Re: Передача данных с одной формы на другую Отправлено: kadr от Январь 19, 2010, 13:46 Спасибо вроде бы получилось, дальше будет видно как все будет работать!
|