Название: Доступ к элементам объета (ООП) Отправлено: demaker от Июня 05, 2012, 15:26 Помогите понять ???
У меня есть форма с кнопкой- объект классаTForm. По нажатию кнопки на форме создается еще одна форма, но не на TForm а отдельно, назавем его объект threadForm класса ThreadForm. При создании threadForm автоматически создается объект класса QThread, а в нем таймер... При создании threadForm указатель на этот объект заносится в список QList<ThreadForm*>m_threadform. QList<ThreadForm*>m_threadform является глобальной переменной внутри класса TForm Я хочу, чтобы при закрытии окна threadForm объект удалялся из списка. Название: Re: Доступ к элементам объета (ООП) Отправлено: mutineer от Июня 05, 2012, 15:33 Доступ к списку в другом файле проекта не могу получить. Ну если не можешь, значит делаешь неправильно что-то))) Название: Re: Доступ к элементам объета (ООП) Отправлено: demaker от Июня 05, 2012, 15:48 Ну а по конкретнее :)
список создается в объекте класса TForm class TForm : public QWidget { Q_OBJECT public: QList<ThreadForm*> m_threadform; int cnt_startValue; public: TForm(QWidget *parent = 0); ~TForm(); public slots: oid startTime(); void get_startValue(QString); protected: void closeEvent(QCloseEvent* event); private: Ui::TFormClass ui; }; вот и по нажатию клавиши connect(ui.pushButton,SIGNAL(clicked()),this,SLOT(startTime())); void TForm::startTime() { ThreadForm* simpleForm = new ThreadForm(cnt_startValue); m_threadform.append(simpleForm); } а когда я отдельно закрою один из ThreadForm* simpleForm он должен удалиться из списка :) но ??? Название: Re: Доступ к элементам объета (ООП) Отправлено: mutineer от Июня 05, 2012, 15:51 Если этот твой виджет удаляется при закрытии, то подпишись на его сигнал destroyed() и удаляй указатель из списка
QList<ThreadForm*>m_threadform является глобальной переменной внутри класса TForm Не является он глобальной переменнойНазвание: Re: Доступ к элементам объета (ООП) Отправлено: Kurles от Июня 05, 2012, 15:56 смотри в сторону сигнала
Код
Название: Re: Доступ к элементам объета (ООП) Отправлено: Alex_C от Июня 05, 2012, 16:49 Я хочу, чтобы при закрытии окна threadForm объект удалялся из списка. setAttribute(Qt::WA_DeleteOnClose); и далее как уже сказано выше сигнал по destroyed. Название: Re: Доступ к элементам объета (ООП) Отправлено: mutineer от Июня 05, 2012, 16:50 Я хочу, чтобы при закрытии окна threadForm объект удалялся из списка. setAttribute(Qt::WA_DeleteOnClose); Как это поможет удалить указатель из списка? Название: Re: Доступ к элементам объета (ООП) Отправлено: Alex_C от Июня 05, 2012, 17:01 Как это поможет удалить указатель из списка? Читаем вопрос: "как при закрытии удалить" - 1 часть - ответ - setAttribute(Qt::WA_DeleteOnClose); Судя по TForm - человек перешел с Дельфи/Билдера. Там в событии OnClose указывалось Action := caFree; Теперь при закрытии окно будет уничтожаться. Значит будет генериться сигнал destroyed - который и будет отловлен и обработан нужным образом. Название: Re: Доступ к элементам объета (ООП) Отправлено: mutineer от Июня 05, 2012, 17:06 Ну с припиской да, поможет
Название: Re: Доступ к элементам объета (ООП) Отправлено: demaker от Июня 06, 2012, 10:29 QList<ThreadForm*>m_threadform является глобальной переменной внутри класса TForm Не является он глобальной переменной[/quote] Оговорился,извините, видимой во всех метода данного объекта :) |