• 6505阅读
  • 10回复

QT中父子窗体 传值问题 [复制链接]

上一主题 下一主题
离线zhangyujin78
 
只看楼主 倒序阅读 楼主  发表于: 2009-08-24
例如:
主ui:  form1.h
      form1.cpp     有常量 a;
子窗体:  form2.h
        form2.cpp   有变量 b;
点击form1上的一个按钮,弹出 form2
并且将 a的值传给b。


有高手告诉下怎么搞么。。我用QT3
这个应该是C++的问题吧,,,和QT没关系吧
离线zhangyujin78
只看该作者 1楼 发表于: 2009-08-24
- -
离线rqzrqh

只看该作者 2楼 发表于: 2009-08-24
主ui::connect(btn,SIGNAL(clicked()),this,SLOT(slotBtnClicked()))
void form1::slotBtnClicked()
{
     form2   *form2 = new form2(this);
     form2->setValure(a);
     form2->show();//如果设置form2为模式对话框可不用
    form2->exec();//如果form2是dialog类型又希望设置为模式对话框时可写
}

子ui::
public:
void setValue(int  a)
{
    b=a;
}
private:
      int b;

不能在构造函数内传递参数,所以只能采取这种方法
离线zhangyujin78
只看该作者 3楼 发表于: 2009-08-25
流氓兔~~
好犀利~
离线zhangyujin78
只看该作者 4楼 发表于: 2009-08-25
子ui::
public:
void setValue(int  a)
{
    b=a;
}
private:
      int b;
这些是不是写在头文件里面的啊?
离线rqzrqh

只看该作者 5楼 发表于: 2009-08-25
引用第4楼zhangyujin78于2009-08-25 09:55发表的  :
子ui::
public:
void setValue(int  a)
{
    b=a;
.......

离线zhangyujin78
只看该作者 6楼 发表于: 2009-08-25
——。——
传不过去。。
我是这样做的:
在主窗口的头文件  form1.h  中定义: public : int a;
在主窗口的实现文件 form1.cpp中,给a进行初始化  a=3;
使用:召唤出form2 界面
connect(btn,SIGNAL(clicked()),this,SLOT(slotBtnClicked()))
void form1::slotBtnClicked()
{
     form2   *form2 = new form2();
     form2->setValure(a);
     form2->show();//如果设置form2为模式对话框可不用
}


在子窗口form2的头文件 form2.h中 #include "form1.h"定义:.
public:
void setValue(int  a)
{
    b=a;
}
private:
      int b;
在子窗口的实现文件form2.cpp中,#include "form2.h"  #include "form1.h"使用printf,打印输出b
不是3 ,是0.。。。
离线john123
只看该作者 7楼 发表于: 2009-08-25
注意你的b是區域變數還是全域變數
還有初始化物件可用建構子
form2(int a)
{
this->b=a;
}
form2   *form2 = new form2(3);





----------------------------------------------------------------------------------------

connect(btn,SIGNAL(clicked()),this,SLOT(slotBtnClicked()))
void form1::slotBtnClicked()
{
     int value;
     form2   *form2 = new form2();
     form2->setValure(a);
     value =form2->get_value();
     cout << "value=" << value;
     form2->show();//如果设置form2为模式对话框可不用
}


在子窗口form2的头文件 form2.h中 #include "form1.h"定义:.
public:
void setValue(int  a)
{
   this->b=a;
}
int get_value()//回傳b整數值
{
      return this->b;
}
离线zhangyujin78
只看该作者 8楼 发表于: 2009-08-25
b是区域变量~
离线zhangyujin78
只看该作者 9楼 发表于: 2009-08-25
我先试试 john123的~
离线zhangyujin78
只看该作者 10楼 发表于: 2009-08-25
流氓兔 过来看看阿~~~~
我的做法哪里有问题,这个值传不过去:
我是这样做的:
在主窗口的头文件  form1.h  中定义: public : int a;
在主窗口的实现文件 form1.cpp中,给a进行初始化  a=3;
使用:召唤出form2 界面
connect(btn,SIGNAL(clicked()),this,SLOT(slotBtnClicked()))
void form1::slotBtnClicked()
{
     form2   *form2 = new form2();
     form2->setValure(a);
     form2->show();//如果设置form2为模式对话框可不用
}


在子窗口form2的头文件 form2.h中 #include "form1.h"定义:.
public:
void setValue(int  a)
{
    b=a;
}
private:
      int b;
快速回复
限100 字节
 
上一个 下一个