• 11738阅读
  • 5回复

用qt编了两个界面,在其中一个界面上得到的数据怎样在第二个界面上实时显示? [复制链接]

上一主题 下一主题
离线0603136
 
只看楼主 正序阅读 楼主  发表于: 2008-07-21
— 本帖被 XChinux 执行加亮操作(2008-07-22) —
大家好,我现在有一个问题想请教一下,谢谢!
我用用qt编了两个界面,不妨分别命名为form1.ui和form2.ui,在form1中设置一个按钮,点击时可以弹出form2(可以实现)。
在form1中设置另一个按钮,点击时执行数据采集程序段,可以进行数据采集。我想把这个时候采集到的数据实时显示在form2中
但是我试了几种方法,form1采集到的数据怎么都不能在form2中显示,不知道怎么样才能实现这个功能,谢谢
呵呵,我自信
离线mumutouv

只看该作者 5楼 发表于: 2008-07-22
你这种样子的话可以这样做
Form2 *dialog1 = new Form2(this,"Form2",TRUE);
connect(this, SIGNAL(), dialog1, SLOT());来做
离线0603136
只看该作者 4楼 发表于: 2008-07-22
直接通过在form1中添加form2类的指针来操作?怎么做啊?
我在form1中设置了form2窗体的指针,
Form2 *dialog1 = new Form2(this,"Form2",TRUE);
  dialog1->exec();
并且在Form2中定义了其中的lineedit的name为lineedit1,……,lineedit10(假设10个编辑框)
当我在form1中 dialog1->settext(lineedit1(tr“4”))的时候,报错说lineedit1没有定义
是不是应该把lineedit1定义为public什么的啊?但是我又不知道该怎么去定义,谢谢指教
呵呵,我自信
离线mumutouv

只看该作者 3楼 发表于: 2008-07-22
在form1中加入一个method call,
数据采集完之后,通过判断哪些数据发生变化,然后通过sendEvent发送给form2窗口,这样速度最快
或者直接通过在form1中添加form2类的指针来操作
离线0603136
只看该作者 2楼 发表于: 2008-07-21
楼上的你好
我的两个界面都是用qt designer作出来的,在form2中有一些lineedit,这些编辑框用来显示要采集的数据。假设在form1中采集的数据分别放在data1,data2……datan里面,下面的程序该怎么写 阿?谢谢!
呵呵,我自信
离线blusherbear

只看该作者 1楼 发表于: 2008-07-21
设form1.ui对应的类为form1Class
form2.ui对应的类为form2Class。
数据采集程序应该是一个耗时操作,那么就需要另开一个线程来做数据采集工作,如果在主线程中做,界面无法响应消息,更无法实时现实采集的数据。设工作线程为SampleThread,

class form1Class{
...
form1Class frm;
SampleThread* procTrd;
void OnProcBtnClicked();//btn1按钮clicked信号的响应函数
void OnShowFrm1BtnClicked();//btn2按钮的clicked信号的响应函数
...
};
在SampleThread中定义一个signal: void ShowData(QString& data),当需要现实数据时emit一下。
在form2Class中定义一个slot:void OnShowData(QString& data),用于响应ShowData signal。
在form1Class 中把signal和slot连接好。
OnProcBtnClicked中启动采集线程,线程的run函数中合适的位置emit ShowData
快速回复
限100 字节
 
上一个 下一个