Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как передать объект основного класса в порождаемый
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
aviabunin
Основной класс:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "mypaint.h"

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
     MainWindow(QWidget *parent = 0);
    ~MainWindow();
    int i;

    myPaint *wgt;               // СОЗДАЕТСЯ ОБЪЕКТ ВТОРОГО КЛАССА

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

Порождаемый класс:
#ifndef MYPAINT_H
#define MYPAINT_H

#include <QWidget>

class myPaint : public QWidget
{
    Q_OBJECT
public:
    myPaint(QWidget *parent = 0);

};

#endif // MYPAINT_H

В кострукторе порождаемого класса хотелось бы поставить второй параметр
типа "MainWindow *wind=0". Чтобы использовать данные, определенные
в основном классе. Как это сделать?
Спасибо, за любую ссылку или подсказку.



Алексей1153
#ifndef MYPAINT_H
#define MYPAINT_H

#include <QWidget>
class MainWindow;

class myPaint : public QWidget
{
    Q_OBJECT
public:
    myPaint(QWidget *parent = 0,MainWindow* mainwnd=0);

};

#endif // MYPAINT_H


и ещё в реализации заинклудить файл, где объявлен класс MainWindow
aviabunin
Спасибо!
Как то в книжках не заметил этого.
vadim303
если основной класс является также и родителем, то конструктор myPaint(QWidget *parent = 0) оставляем без изменений, а при создании объекта второго класса передаём указатель на объект основного:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
  ...
  wgt = new myPaint(this);
  ...
}
а внутри объекта myPaint получаем доступ к родителю через ((MainWindow*)this->parent()).

Но это если родителем всегда является MainWindow. В противном случае - делаем как сказано выше, но только конструктор лучше сделать так:
myPaint(MainWindow* mainwnd, QWidget *parent = 0);

потому что указатель mainwnd нужен будет, как я понял, всегда, а вот parent-а может и не быть при создании.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.