Всем привет!
Есть два класса "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);
}