crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> доступ к функциям класса
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 уже создан :unsure:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 13.9.2010, 21:11
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


попробуй так. Изменённые места помечены //<<<<<<
class First : public QWidget, public Ui::Bobkova
{
    Q_OBJECT

public slots:
    void OPEN();
    void SETTEXT();
};

void First::OPEN()
{
s = new Second(this);//<<<<<<
s->show();
}

void First::SETTEXT()
{
lineEdit->setText("O'KEY");
}


class Second : public QWidget, public Ui::Nagaeva
{
    Q_OBJECT

public:
    Second(First* pF,QWidget* pwgt = 0, Qt::WindowFlags f = 0x00020000);//<<<<<<
};

Second::Second(First* pF,QWidget* pwgt,Qt::WindowFlags f) : QWidget(pwgt,f) //<<<<<<
   {
  
    setupUi(this);
    setFixedSize(300, 300);
    connect(pushButton, SIGNAL(clicked()),pF, SLOT(SETTEXT()));//<<<<<<
}




а ещё не забудь освободить памать из-под s
s = new Second;



Как вариант:

Second::Second(First* pF,Qt::WindowFlags f) : QWidget(pF,f) //<<<<<<
{
...



И флаги лучше не цифрой указывать, а константой

Qt::WindowFlags f = 0x00020000
Qt::WindowFlags f = Qt::WindowShadeButtonHint

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 14.1.2025, 7:35