当前位置: 技术问答>linux和unix
面向对象基本概念的疑问,类对象之间怎样传值的?(有代码)
来源: 互联网 发布时间:2016-06-08
本文导语: 先bs自己一个,这个基本概念总是模糊,望大家指教。 以qt为例好了 这里有Class A,为主窗口类 Class B,为弹出窗口类 A是个list控件,通过一个方法弹出B类的窗口 B里面有文本框控件和ok button 流程:点击ok后在A里面...
先bs自己一个,这个基本概念总是模糊,望大家指教。
以qt为例好了
这里有Class A,为主窗口类
Class B,为弹出窗口类
A是个list控件,通过一个方法弹出B类的窗口
B里面有文本框控件和ok button
流程:点击ok后在A里面添加一个item,名字是B的文本框的text
问题是A怎样获得B的文本框text?
下面是我的方法,动作后A的listWidget里面没有添加新的item,不知道怎么回事。
class B;
Class A
{
Q_OBJECT
public:
A();
void showBWnd();
void addNewItem(QListWidgetItem *item);
private:
B *b;
};
------------
Class B
{
Q_OBJECT
public:
B();
private:
QLineEdit *le;
QPushButton *ok;
private slots:
void addNew();
};
----b.cpp
#include "a.h"
//...
B()
{
//...
connect(ok, SIGNAL(clicked()), this, SLOT(addNew()));
//...
}
void B::addNew()
{
//...
A* a = new A; //是不是这里有问题,new一个A就不是原来的A了
QListWidgetItem *item = new QListWidgetItem;
item->setText(le->text()); //这里可以打印出text的值
a->addNewItem(item);
}
-----a.cpp
void A::addNewItem(QListWidgetItem *item)
{
listWidget->addItem(item); //listWidget在A()里new过了
}
listWidget到底怎样通过点击添加item呢?
感谢
以qt为例好了
这里有Class A,为主窗口类
Class B,为弹出窗口类
A是个list控件,通过一个方法弹出B类的窗口
B里面有文本框控件和ok button
流程:点击ok后在A里面添加一个item,名字是B的文本框的text
问题是A怎样获得B的文本框text?
下面是我的方法,动作后A的listWidget里面没有添加新的item,不知道怎么回事。
class B;
Class A
{
Q_OBJECT
public:
A();
void showBWnd();
void addNewItem(QListWidgetItem *item);
private:
B *b;
};
------------
Class B
{
Q_OBJECT
public:
B();
private:
QLineEdit *le;
QPushButton *ok;
private slots:
void addNew();
};
----b.cpp
#include "a.h"
//...
B()
{
//...
connect(ok, SIGNAL(clicked()), this, SLOT(addNew()));
//...
}
void B::addNew()
{
//...
A* a = new A; //是不是这里有问题,new一个A就不是原来的A了
QListWidgetItem *item = new QListWidgetItem;
item->setText(le->text()); //这里可以打印出text的值
a->addNewItem(item);
}
-----a.cpp
void A::addNewItem(QListWidgetItem *item)
{
listWidget->addItem(item); //listWidget在A()里new过了
}
listWidget到底怎样通过点击添加item呢?
感谢
|
B类里定义一个方法,让a在调用的时候把实例a的this指针传给b。
这样双方都有对方实例的指针了,你不可能还有疑问了吧。
虽然不是太看清楚你的问题。
这样双方都有对方实例的指针了,你不可能还有疑问了吧。
虽然不是太看清楚你的问题。
|
a是类,要实例化一个对象,
b具体是什么控件,一定有 传递值到 程序变量的函数.
|
控件,传值给后台,不通的控件传值方式不一样.
这是界面.
这跟面向对象没有必然的练习.