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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Потомки и родители (иерархия объектов)  (Прочитано 3023 раз)
Switch74
Гость
« : Апрель 23, 2010, 09:08 »

 Здравствуйте.
Совсем запарился, не могу разобраться помогите плиз???

меня интересует возможность выставления иерархии объектов, например
Код:
class init : public QObject
{
Q_OBJECT
public:
    explicit init(QObject *parent = 0);
    int i;
};

class window : public QMainWindow
{
Q_OBJECT
public:
    explicit window();
};

init::init(QObject *parent) :
    QObject(parent)
{
    i = 1;
}

window::window()
{
    //знаю, что parent у меня не определён, в этом то и проблемма, как правильно сделать так,
 чтобы из второго объекта можно было читать/изменять переменные другого, и выполнять его методы
 в процессе выполнения программы...
    parent->i = 2;
}


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    init objectMain;

    window windowMain;

    return a.exec();
}

Записан
SABROG
Гость
« Ответ #1 : Апрель 23, 2010, 09:17 »

Варианты:
* передать указатель на init, сделать публичные методы для изменения переменных
* сделать init другом (friend) для window
* QObject::setParent()
Записан
Switch74
Гость
« Ответ #2 : Апрель 23, 2010, 09:26 »

QObject::setParent() и передача указателя на init выдаёт у мя схожую ошибку
пробовал и с QObject и QWidget
Код:
error: no matching function for call to 'window::window(init&)'
note: candidates are: window::window(QWidget*)
note:                 window::window(const window&)
Про друга не знаю как сделать, ща поищу.
 Можете модифицировать мой window для передачи указателя В замешательстве
Записан
SABROG
Гость
« Ответ #3 : Апрель 23, 2010, 13:39 »

Код
C++ (Qt)
class window : public QMainWindow
{
   Q_OBJECT
public:
   explicit window(QObject* parent = 0);
};
...
window::window(QObject* parent) : QMainWindow(parent)
{
}
 
int main(int argc, char* argv[])
{
   QCoreApplication a(argc, argv);
   init objectMain;
 
   window windowMain(&objectMain);
 
   return a.exec();
}
 
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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