Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Общение между двумя объектами! 
:(
    Опции темы
Racot
Дата 14.4.2012, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 11.10.2011

Репутация: нет
Всего: нет



Код
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow1 *w = new MainWindow1();
    MainWindow2 *w2 = new MainWindow2();

    w->show();

    return a.exec();
}



У меня есть 2 формы классов MainWindow1 и MainWindow2.На каждой есть по кнопке, по нажатию которой должна появляется другая форма, а эта скрывается. То есть в слоте обработки нажатия на кнопку должно быть примерно так:
Код:

Код
void MainWindow1::on_pushButton_clicked()
{
  w2->show();
  w1->hide();  
}



но класс MainWindow1 ничего же не знает о объекте w2. Как это делается? Можно MainWindow1 *w и
MainWindow2 *w2 объявлять глобально.Но я читал что  это не правильно.(тем более допустим в java нет глобальных переменных, но там же как то это реализовывается). В общем кто реализовывал многооконные интерфейсы - помогите!! 

Модератор: не забываем пользоваться кнопочкой "Код"

Это сообщение отредактировал(а) bsa - 14.4.2012, 23:27
PM MAIL   Вверх
borisbn
Дата 14.4.2012, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Передавай указатель на одно окно другому
Код

class MainWindow1 {
...
public:
   void setOther( QWidget * other ) { m_other = other; }
...
private:
   QWidget * m_other;
};

void MainWindow1::on_pushButton_clicked() {
    m_other->show();
    this->hide();  
}

у второго класса полностью идентично.
а в main делаешь так
Код

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow1 *w = new MainWindow1();
    MainWindow2 *w2 = new MainWindow2();
    w->setOther( w2 );
    w2->setOther( w );

    w->show();

    return a.exec();
}


Добавлено через 1 минуту и 50 секунд
Цитата(Racot @  14.4.2012,  16:09 Найти цитируемый пост)
Можно MainWindow1 *w и
MainWindow2 *w2 объявлять глобально.Но я читал что  это не правильно

Правильно читал. Без этого всегда можно и нужно обходиться.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Racot
Дата 14.4.2012, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 11.10.2011

Репутация: нет
Всего: нет



Как только создаю в каждом из классов указатели друг на друга.....то компилятор мне выдаёт -


..\Temp_pro\/mainwindow2.h:15: error: ISO C++ forbids declaration of 'MainWindow1' with no type
..\Temp_pro\/mainwindow2.h:15: error: expected ';' before '*' token

borisbn  а ты  сам пробывал?
или подскажи что енто за ошибка))) 
PM MAIL   Вверх
Racot
Дата 14.4.2012, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 11.10.2011

Репутация: нет
Всего: нет



А всё .......разобрался!!!!! Спасибо!!!
PM MAIL   Вверх
bsa
Дата 14.4.2012, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
Пометь тему решенной

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0723 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.