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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Использование в нескольких классах одной формы  (Прочитано 2699 раз)
kip_one
Гость
« : Апрель 25, 2013, 14:00 »

Каким методом можно использовать в нескольких классах одну форму?Буду рад любым советам.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Апрель 25, 2013, 16:16 »

наследованием
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Serr500
Гость
« Ответ #2 : Апрель 25, 2013, 16:22 »

А что значит
Цитировать
использовать в нескольких классах одну форму?
Если экземпляр формы один, а надо с ним работать из разных классов, то передаёте в каждый класс указатель на этот экземпляр. Если же надо несколько экземпляров одной и той же формы, то создаёте класс формы и в каждом классе создаёте её экземпляр, с которым потом класс и работает.
« Последнее редактирование: Апрель 25, 2013, 18:53 от Serr500 » Записан
kip_one
Гость
« Ответ #3 : Апрель 26, 2013, 00:22 »

Обращаться к объектам через указатель ui со всех классов.  
Код:
widget.h

#include "ui_widget.h"
#include <QtGui>

class Widget : public QWidget, private Ui::Widget
{
    Q_OBJECT
   
public:
    explicit Widget(QWidget *parent = 0);
};
class MainClass: public QWidget, private Ui::Widget
{
    Q_OBJECT

public:
    explicit MainClass(QWidget *parent = 0);
};
Код:
widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent)
{
    setupUi(this);
    MainClass main;
}
MainClass::MainClass(QWidget *parent) :
    QWidget(parent)
{
    setupUi(this);
    pushButton->setVisible(false);
    QMessageBox::information(0,"","q");
}

Сообщение показывает, но кнопка на месте.
« Последнее редактирование: Апрель 26, 2013, 00:31 от kip_one » Записан
Serr500
Гость
« Ответ #4 : Апрель 26, 2013, 06:40 »

А почему кнопка должна исчезнуть? У Вас два класса, каждый из которых содержит свой экземпляр формы (того, что Вы называете ui). В MainClass Вы работаете с экземпляром формы, принадлежащем MainClass, а экземпляр, принадлежащий Widget, который, судя по всему, и отображается на экране, естественно, не изменится. Если в классе MainClass надо работать с формой из Widget, передавайте указатель на форму в конструктор класса и следите, чтобы форма не была разрушена раньше, чем MainClass.

P.S. Похоже, Вы слабо разбираетесь в основах наследования классов.
Записан
kip_one
Гость
« Ответ #5 : Май 16, 2013, 21:44 »

Вы правы, внимательно почитав наследование все стало ясно. Нужно было правильно сделать диаграмму классов.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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