Название: Как вычисленное значение с одной формы передать на другую? Отправлено: lexflax от Январь 26, 2014, 07:22 Доброго времени суток.
На форме mainwindows у меня вычисляется значение первого столбца строки которую выбрал пользователь. Код: QModelIndex current = ui->tableView->currentIndex(); Как это можно сделать? Знаю что как то с сигналами и слотами... но как именно не представляю пока как можно передать эти значения... подскажите пожалуйста... Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: Vamireh от Январь 26, 2014, 10:36 добавьте публичный метод в form6 типа void setValue(QVariant &), в нем в комбо бокс значение заносите. из первой формы вызовите этот метод
Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: lexflax от Январь 26, 2014, 12:08 form6.h
Код: #include "mainwindow.h" Код: void MainWindow::setValue(QVariant &) Код: D:\project qt new\untitled\untitled33\form6.cpp:63: ошибка: no 'void MainWindow::setValue(QVariant&)' member function declared in class 'MainWindow' Еще момент... Компонент combobox у меня есть и на mainwindow и на form6 в этой функции если я понимаю он будет брать тот который на mainwindow а надо чтоб записывал в тот который на form6 Код: void MainWindow::setValue(QVariant &) Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: lexflax от Январь 26, 2014, 12:52 если вызову функцию так
Код: void Form6::setValue(QVariant &) Код: tableView Код: D:\project qt new\untitled\untitled33\form6.cpp:65: ошибка: 'class Ui::Form6' has no member named 'tableView' Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: Bepec от Январь 26, 2014, 12:54 Учить C++ и объектно ориентированное программирование.
Нет у вас в Form6 объекта MainWindow. Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: lexflax от Январь 26, 2014, 13:06 Ну объясните что я делаю не так? и как правильно нужно все выстроить?
Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: Vamireh от Январь 26, 2014, 13:45 1) Первая форма должна знать указатель на шестую форму
2) В шестой форме (если использовать дизейнер), то все виджеты - приватные, делать их публичными - моветон. Поэтому, например, делайте публичный метод в 6 форме, который принимает ваше значение и сует его куда надо в свою (шестую) форму 3) Поскольку из п.1 следует, что первая форма знает адрес шестой, то просто вызывайте этот метод шестой формы типа form6->setValue.... Код настолько очевиден, что лень писать. Достаточно прочитать одну главу по ООП из любой книжки, что бы он и для вас стал очевиден. Qt на этом уровне не причем. Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: Igors от Январь 26, 2014, 13:46 Ну объясните что я делаю не так? Да все. Лепите абы как, Ваш текст навевает грусть и меланхолию. Ладно, по существу: хз кто такой tableView и где/как он объявлен. Есть форма, на ней комбик, Вы хотите установить в нем нужный айтем. Ну и делайте в setValue только это, аргумент - текст для установки. А откуда он возьмется - это уже дело того кто вызовет Form6::setValue Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: lexflax от Январь 26, 2014, 14:25 Вы хотите установить в нем нужный айтем. Ну и делайте в setValue только это, аргумент - текст для установки.
Нужный текст (содержимое у меня получается в результате выполнения вот этой строчки) Код: ui->tableView->model()->data(ui->tableView->model()->index(current.row(),0),0); Код: void MainWindow::on_pushButton_3_clicked() Перенести эту строчку Код: ui->tableView->model()->data(ui->tableView->model()->index(current.row(),0),0); я не могу он мне выдаст ошибку Код: D:\project qt new\untitled\untitled33\form6.cpp:65: ошибка: 'class Ui::Form6' has no member named 'tableView' Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: lexflax от Январь 26, 2014, 16:13 Теоретически можно пустить сигнал содержащий необходимые данные из MainWindow а в Form6 словить этот сигнал...
Но как это практически реализовать я не знаю(( и какие именно данные пустить вместе с сигналом не знаю( Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: gil9red от Январь 26, 2014, 16:19 Давайте проект сюда и расскажите, что как и куда :)
Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: kambala от Январь 26, 2014, 17:12 почитай про параметры метода/конструктора
Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: sergey2212 от Январь 29, 2014, 09:24 Не понимаю зачем усложнять все так. Не легче объяснить человеку чем отправлять его читать мануалы.
Я делаю так, вот у меня есть форма А где у меня есть значение, мне надо передать в другую форму Б в (форма приема).h создаю слот public slots: void priem(int) в (форма приема).cpp прописываю void (форма приема)::priem(int a) { a - значение которое я получил и делаю с ним что хочу } в (форме отправке).h создаю сигнал signals: void otpravka(int) в (форме отправке).cpp в любом месте где я получаю значение и мне надо его передать прописываю QObject::connect(this, SIGNAL(otpravka(int)), &(форма приема), SLOT(priem(int))); далее передаю непосредственно сигнал emit otpravka(нужное значение) Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: Igors от Январь 29, 2014, 10:33 Не легче объяснить человеку чем отправлять его читать мануалы. Вы скоро убедитесь что нет :) Я пытался объяснить то же самое - передатчик передает, приемщик принимает. Но ТС упорно хочет влезть в кишки передатчика на стороне приемника. Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: kambala от Январь 29, 2014, 13:08 2sergey2212: в данном случае использование сигнал-слотового механизма не оправдано — это ненужное усложнение. а объяснять ТСу азы С++ у нас на форуме вряд ли кто-то будет.
Название: Re: Как вычисленное значение с одной формы передать на другую? Отправлено: lexflax от Январь 30, 2014, 14:31 sergey2212, Сергей спасибо все сделал)
|