首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

两个widget之间如何传数据

2012-02-01 
两个widget之间怎么传数据如题:#include b.hclass A:public QWidget{public:QString tB *b// public:}

两个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有帮助

热点排行