[решено]передача данных между модулями |
Здравствуйте, гость ( Вход | Регистрация )
[решено]передача данных между модулями |
_Vitaliy_ |
9.11.2009, 15:34
Сообщение
#1
|
Студент Группа: Участник Сообщений: 59 Регистрация: 20.11.2008 Пользователь №: 428 Спасибо сказали: 3 раз(а) Репутация: 0 |
Доброго времени суток уважаемое комьюнити.
вопрос для "продвинутых" просто ламерский но я пока ломаю об него копья (ибо только учусь)... Есть модуль (мainwindow.срр), в конструкторе создаю новый виджет-таблица (выделен жирным в коде)
Создал новый модуль obrabotka (obrabotka.cpp):
Т.е. я хочу в этот модуль считать данные из TableWidget(dialog) маин-окна, как это правильно сделать. Сообщение отредактировал _Vitaliy_ - 14.11.2009, 20:51 |
|
|
Litkevich Yuriy |
9.11.2009, 16:05
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
непонятна связь между двумя (тремя) классами - MainWindow, obrabotka (QDialog с довеском)
|
|
|
_Vitaliy_ |
9.11.2009, 17:15
Сообщение
#3
|
Студент Группа: Участник Сообщений: 59 Регистрация: 20.11.2008 Пользователь №: 428 Спасибо сказали: 3 раз(а) Репутация: 0 |
непонятна связь между двумя (тремя) классами - MainWindow, obrabotka (QDialog с довеском) Согласен, привожу часть проекта, прошу сильно не пинать, только учусь Раскрывающийся текст #include "mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ... dialog=new QDialog(this); table=new QTableWidget(dialog); QVBoxLayout* layout=new QVBoxLayout(); layout->addWidget(table); dialog->setLayout(layout); dialog->resize(700,400); ... } MainWindow::~MainWindow() { saveSettings(); delete ui; } void MainWindow::viewObrabotka() { obrabotka *pobrabotka = new obrabotka; pobrabotka->show(); } ... и второй файл Раскрывающийся текст #include "obrabotka.h" #include "ui_obrabotka.h" #include "mainwindow.h" obrabotka::obrabotka(QWidget *parent) : QDialog(parent), m_ui(new Ui::obrabotka) { m_ui->setupUi(this); double X1[50], Y1[50],X2[50], Y2[50]; int Size,i; Size = 50; for (i=2260; i<2300; i++) { X1[i] = ??? } } ... В мэйнвиндов я открываю файл для чтения и записываю его в таблицу: dialog=new QDialog(this); table=new QTableWidget(dialog); Во второй форме: obrabotka.cpp я хочу использовать данные из таблицы мэйнвиндов (по коду X1[i] = ???) Если я напорол (а я скорее всего напорол) прошу меня поправить или наставить на путь истинный, скорее всего я что-то делаю через ж... Сообщение отредактировал _Vitaliy_ - 14.11.2009, 20:48 |
|
|
Litkevich Yuriy |
9.11.2009, 17:39
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Согласен, привожу часть проекта, прошу сильно не пинать, только учусь Т.к. ты незнаешь как поступить, то часть твоего проекта пользы не принесёт. Лучше нарисуй картинку желаемого взаимодействия между визуальными компонентами (окнами).П.С. возможно, что когда ты её нарисуешь, то самому станет понятно, как нужно поступить. |
|
|
_Vitaliy_ |
9.11.2009, 19:18
Сообщение
#5
|
Студент Группа: Участник Сообщений: 59 Регистрация: 20.11.2008 Пользователь №: 428 Спасибо сказали: 3 раз(а) Репутация: 0 |
Задача сводится к следующему.
1. Есть главное окно программы. 2. Открываю для чтения текстовый файл данных. 3. В отдельном окне отображается открытый файл в табличном виде. (Опция просмотра реализуется через меню). 4. Есть отдельная форма обработки, в которой происходит обработка данных, взятых из п.п. 3. Это пока все. Задача: научиться использовать (правильно) данные между несколькими формами. |
|
|
Litkevich Yuriy |
10.11.2009, 1:55
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
3. В отдельном окне отображается открытый файл в табличном виде. (Опция просмотра реализуется через меню). не понятно почему в разных местах, будет ли это удобно пользователю?4. Есть отдельная форма обработки, в которой происходит обработка данных, взятых из п.п. 3. Задача: научиться использовать (правильно) данные между несколькими формами. Тут надо простую вещь уяснить - кто-то будет владельцем данных (будет содержать их и раздавать другим). Все потребители этих данных должны уметь общаться с источником данных. Соответственно источник данных должен открывать фай и сохранять в него, если это необходимо.Например, так: * В главном окне создаётся некий объект работы с файлом, он открывает файл и предоставляет сигналы и слоты для доступа к данным. * Объект-росмотрщик файлов создаётся также в главном окне, главное окно связывает этот объект с объектом-источником_данных (передавая аргументы в конструктор или с помощью сигналов и слотов) * Объект-редактор файлов создаётся также в главном окне, главное окно связывает этот объект с объектом-источником_данных (передавая аргументы в конструктор или с помощью сигналов и слотов) |
|
|
_Vitaliy_ |
14.11.2009, 21:06
Сообщение
#7
|
Студент Группа: Участник Сообщений: 59 Регистрация: 20.11.2008 Пользователь №: 428 Спасибо сказали: 3 раз(а) Репутация: 0 |
Отвечу сам себе , благо есть добрые люди, которые оказали неоценимую помощь, благодаря которой освоил (немного) QStandardItemModel.
Итак: кусок инициализации в главном окне:
функция, отвечающая за открытие окна с данными:
в этой функции создается новое окно для обработки:
а теперь непосредственно второй модуль, в котором происходит обработка:
и проблема решена... |
|
|
Текстовая версия | Сейчас: 22.12.2024, 16:13 |