доступ к функциям класса |
Здравствуйте, гость ( Вход | Регистрация )
доступ к функциям класса |
Daan |
13.9.2010, 14:26
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 13.9.2010 Пользователь №: 2033 Спасибо сказали: 0 раз(а) Репутация: 0 |
Имеются два класса, class FIRST и class SECOND, наследуемые от QWidget.
Описаны и определены соответственно в файлах firstclass.h + firstclass.cpp и secondclass.h + secondclass.cpp Класс FIRST, чей конструктор объявлен в firstclass.h включает #include "secondclass.h" и имеет среди членов указатель на объекта класса SECOND, например SECOND s*; Затем в функции main создается объект класса FIRST и появляется окно. Затем при выполнении какой-то функции класса FIRST создается через указатель s* объект класса SECOND и появляется отдельное окно - виджет класса SECOND Задача такова: Мне теперь нужно после выполнения определенной функции класса SECOND, описание которой находится в secondclass.cpp вызвать определенную функцию ( допустим функция void take_control() ) класса FIRST, которая описана в файле firstclass.cpp. (Она будет обрабатывать данные из общего массива, который изменялся во втором окне и рамещать их в первом окне) Как мне получить доступ к функциям уже созданного объекта класса FIRST из класса SECOND ? Меня смущает то, что объект класса FIRST уже создан |
|
|
ufna |
13.9.2010, 14:36
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5 |
Посмотри технологию сигнал-слот.
В "first" будет слот, в "second" сигнал. В нужный момент отсылаешь сигнал, а слот - и есть нужная тебе функция. |
|
|
Daan |
13.9.2010, 20:48
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 13.9.2010 Пользователь №: 2033 Спасибо сказали: 0 раз(а) Репутация: 0 |
Так и сделал, но чего-то не хватает.
Вообщем во вложении то, о чем я говорю. Мне надо чтобы при нажатии кнопки SET TEXT, принадлежащей второму окну, в первом окне происходи вызов функции, которая устанавливает текст в QLineEdit код тут |
|
|
Алексей1153 |
13.9.2010, 21:11
Сообщение
#4
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
попробуй так. Изменённые места помечены //<<<<<<
а ещё не забудь освободить памать из-под s
Как вариант:
И флаги лучше не цифрой указывать, а константой Qt::WindowFlags f = Qt::WindowShadeButtonHint |
|
|
Daan |
14.9.2010, 15:46
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 13.9.2010 Пользователь №: 2033 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо большое за ответ.
А кстати насчет освобождения памяти после void First::OPEN(){ s = new Second; s->show(); } В какой момент можно выполнять delete s; Может быть после закрытия второго окна ? А если в функцию OPEN() вставить проверку указывает ли s на виджет, который уже создан, и тогда просто вызывать s->show(); Или никак не проверить ? |
|
|
Алексей1153 |
14.9.2010, 18:25
Сообщение
#6
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Может быть после закрытия второго окна ? ну, в принципе, да ) А если в функцию OPEN() вставить проверку указывает ли s на виджет, который уже создан, и тогда просто вызывать s->show(); Или никак не проверить ? технически можно, но нужно ли - это зависит от логики твоего алгоритма. Которого никто, кроме тебя, не знает ) |
|
|
Daan |
15.9.2010, 21:02
Сообщение
#7
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 13.9.2010 Пользователь №: 2033 Спасибо сказали: 0 раз(а) Репутация: 0 |
Да, действительно)
Second::Second(First* pF,QWidget* pwgt,Qt::WindowFlags f) : QWidget(pwgt,f) А не подскажете, для чего служит эта часть: : QWidget(pwgt,f) ? |
|
|
Litkevich Yuriy |
15.9.2010, 21:04
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Алексей1153 |
15.9.2010, 21:23
Сообщение
#9
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Daan, это таким образом реализована передача параметров в конструктор родительского класса (вообще, в списке инициализации не только конструктор родителя можно вызвать, но и конструкторы членов-переменных класса)
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 11:13 |