Russian Qt Forum
Сентябрь 30, 2024, 22:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Доступ к элементам объета (ООП)  (Прочитано 4054 раз)
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« : Июнь 05, 2012, 15:26 »

Помогите понять Непонимающий

У меня есть форма с кнопкой- объект классаTForm.

По нажатию кнопки на  форме создается еще одна форма, но не  на TForm а отдельно, назавем его объект threadForm класса ThreadForm.
 
При создании threadForm автоматически создается объект класса QThread, а в нем таймер...

При создании threadForm указатель на этот объект заносится в список QList<ThreadForm*>m_threadform.
QList<ThreadForm*>m_threadform является глобальной переменной внутри класса TForm

Я хочу, чтобы при закрытии окна threadForm объект удалялся из списка.



 
« Последнее редактирование: Июнь 05, 2012, 15:33 от demaker » Записан
mutineer
Гость
« Ответ #1 : Июнь 05, 2012, 15:33 »

Доступ к списку в другом файле проекта не могу получить.

Ну если не можешь, значит делаешь неправильно что-то)))
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #2 : Июнь 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 он должен удалиться из списка
 Улыбающийся

но Непонимающий
Записан
mutineer
Гость
« Ответ #3 : Июнь 05, 2012, 15:51 »

Если этот твой виджет удаляется при закрытии, то подпишись на его сигнал destroyed() и удаляй указатель из списка


QList<ThreadForm*>m_threadform является глобальной переменной внутри класса TForm
Не является он глобальной переменной
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #4 : Июнь 05, 2012, 15:56 »

смотри в сторону сигнала
Код
C++ (Qt)
void QObject::destroyed ( QObject * obj = 0 ) [signal]
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Alex_C
Гость
« Ответ #5 : Июнь 05, 2012, 16:49 »

Я хочу, чтобы при закрытии окна threadForm объект удалялся из списка.

setAttribute(Qt::WA_DeleteOnClose);

и далее как уже сказано выше сигнал по destroyed.
Записан
mutineer
Гость
« Ответ #6 : Июнь 05, 2012, 16:50 »

Я хочу, чтобы при закрытии окна threadForm объект удалялся из списка.

setAttribute(Qt::WA_DeleteOnClose);


Как это поможет удалить указатель из списка?
Записан
Alex_C
Гость
« Ответ #7 : Июнь 05, 2012, 17:01 »

Как это поможет удалить указатель из списка?

Читаем вопрос: "как при закрытии удалить" - 1 часть - ответ - setAttribute(Qt::WA_DeleteOnClose);
Судя по TForm - человек перешел с Дельфи/Билдера. Там в событии OnClose указывалось Action := caFree;
Теперь при закрытии окно будет уничтожаться.
Значит будет генериться сигнал destroyed - который и будет отловлен и обработан нужным образом.
Записан
mutineer
Гость
« Ответ #8 : Июнь 05, 2012, 17:06 »

Ну с припиской да, поможет
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #9 : Июнь 06, 2012, 10:29 »

QList<ThreadForm*>m_threadform является глобальной переменной внутри класса TForm
Не является он глобальной переменной
[/quote]


Оговорился,извините, видимой во всех метода данного объекта  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.145 секунд. Запросов: 22.