crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Передача данных из одного объекта в другой., Как передать данные из объекта?
Radium
  опции профиля:
сообщение 7.3.2009, 1:02
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 28.10.2008
Пользователь №: 402

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




Репутация:   0  


Всем привет!

Есть два класса "A" и "B".
На базе этих классов создаются два объекта "a" и "b".
Объект "а" создается в объекте "b".

Проблема.
1. Как передать данные из объекта "a" m_StringList_A (класс A) в объект "b" m_StringList_B (класс B )
по сигналу нажатия кнопки Button (класс A) слот void A::setStringList() ?

2. Затем вызвать функцию void B::setComboBox() ?

______________________________________________
Заранее благодарю, за конструктивные ответы.

Исходники
// main.cpp
#include <QtGui>
#include "m.h"

//--------------------------------------------------------
int main(int argc, char** argv)
{
         QApplication app(argc, argv);

         B b;
         b.show();

         return app.exec();
}


//m.h
#ifndef M_H
#define M_H

#include <QtGui>

//------------------------------------------------------------------------
class A : public QWidget
{
        Q_OBJECT
public:
        A(QWidget* parent = 0);
    ~A(){};

public slots:
         void setStringList();
  
private:
    QStringList m_StringList_A;
    QPushButton* m_pPushButton;
};


//------------------------------------------------------------------------
class B : public QWidget
{
        Q_OBJECT
public:
        B(QWidget* parent = 0);
    ~B(){};
    
private:
    QStringList m_StringList_B;
    QComboBox* m_pComboBox;
    void setComboBox();
    A a;
};

#endif


// m.cpp
#include <QtGui>
#include "m.h"

//--------------------------------------------------------
A::A(QWidget* parent): QWidget(parent)
{

    m_StringList_A << "New1" << "New2";

    m_pPushButton = new QPushButton ("Button");
    connect(m_pPushButton, SIGNAL(clicked()), this, SLOT(setStringList()));

    QPushButton* pPushButton_Quit = new QPushButton("&Quit");
    connect(pPushButton_Quit, SIGNAL(clicked()), qApp, SLOT(quit()));

    QGridLayout* g = new QGridLayout;
    g->addWidget(m_pPushButton, 0, 0);
    g->addWidget(pPushButton_Quit, 1, 0);
    setLayout(g);

    setWindowTitle("A");
    move(x() + 0, y() + 0);
    resize(200, 120);

}

void A::setStringList()
{
    // ??????????
}


//--------------------------------------------------------
B::B(QWidget* parent): QWidget(parent)
{
    a.show();
    
    m_StringList_B << "Text1" << "Text2";
    m_pComboBox = new QComboBox;
    setComboBox();

    QGridLayout* g = new QGridLayout;
    g->addWidget(m_pComboBox, 0, 0);
    setLayout(g);

    setWindowTitle("B");
    move(x() + 300, y() + 0);
    resize(200, 120);

}

void B::setComboBox()
{
    m_pComboBox->addItems(m_StringList_B);
    m_pComboBox->setEditable(true);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.3.2009, 8:12
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Radium @ 7.3.2009, 4:02) *
1. Как передать данные из объекта "a" m_StringList_A (класс A) в объект "b" m_StringList_B (класс B )
по сигналу нажатия кнопки Button (класс A) слот void A::setStringList() ?


в классе "А" создаем сигнал signalData(QStringList)
В слоте setStringList(), посылаем этот сигнал:
void A::setStringList()
{
    emit signalData(m_StringList_A);
}


в классе "B" создаем слот slotData(QStringList)
В конструкторе класса "В", после зодания объекта "А" соединяем сигнал A::signalData(QStringList), со слотом B::slotData(QStringList). Ну а в этом слоте обновляем значение m_StringList_B и вызываем функцию setComboBox()




Radium, длиннные портянки исходников делай сворачивающимися, см. тут
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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