两个widget之间怎么传数据
如题:
#include "b.h"
class A:public QWidget{
public:
QString t;
B *b;
// public:
}
b = new B();
t = b->edit->text();
class B:public QWidget{
public:
QLineEdit *edit;
public slots:
void button();
}
#include "a.h"
void B::button
{
A* a = new A();
a->t - edit->text();
}
在B 中, a->t - edit->text()是有值的,可是传回到A中定义的t时,值却是空的,这是为什么呢?求解。
[解决办法]
用信号和槽,看你写的看的很晕...大概理解你的意思就是俩界面有俩LineEdit,要同步这俩LineEdit的内容是吧,只能用信号和槽,作用域不一样,你去的变量名虽然一样但实际是不一样的,这样不可能传递值
A里面写connect(b,SIGNAL(lineeditChanged()),this,SLOT(.....));
B里面反过来,那个信号忘了是什么了,你就按我写的字面意思理解,有个信号是lineedit的内容发生改变时就发送信号,参数是字符串,自己去手册里找找,槽函数接受传过来的字符串,这样才能传递数据。
问题解决了记得结贴
[解决办法]
看不清楚程序。。看上去你A里的b是new出来的,B里的a也是new出来的。。
那么A里面b包含的a就是就不是自己了吧。。。
[解决办法]
如果是我写,一般是这样
class B加个函数
setA(A* input_a){
a = input_a;
}
class A加个函数
setB(B* input_b){
b = input_b;
}
a = new A;
b = new B;
然后b-> setA(a);
a-> setB(b);
然后在槽函数里面操作指针就可以了
[解决办法]
a->t - edit->text();
这是想干什么呢?这个程序看不太懂。
[解决办法]
两个Widget传值
定义两个Widget类:WidgetA、与WidgetB
[code=C/C++]
//widgetA
class WidgetA
{
Q_OBJECT
.....
private:
WidgetB* m_widgetB;
};
void WidgetA::UseTest()
{
QString str = "传递的值";
m_widgetB = new WidgetB();
m_widgetB->setStr(str); //把WigdetA类中的str值传递到WidgetB中
QString getStr = m_widgetB->getStr(); //从WigdetB类中获取str的值
}
//widgetB
class WidgetB
{
Q_OBJECT
public:
......
QString getStr() const {return m_str;} //用于获取widgetb类的值
void setStr(const QString& str){m_str = str;}//用于为widgetb类设置值
private:
QString m_str;
};
[code]
此方法是利用属性的方法实现传值、
其实还用可以利用信号和槽也可实现的
希望对lz有帮助