• 5178阅读
  • 5回复

关于如何在两个窗口传数据的问题,有个疑问请教一下。 [复制链接]

上一主题 下一主题
离线zonelight
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-14
QT初学者一个,用的就是QT Creator,不知道是QT本身这样子还是QT Creator的问题,总之当有多窗口的程序启动时,似乎是所有窗口的窗口构造函数都执行完以后才开始显示界面,也就是像点一下鼠标弹出个界面这种实际上弹出来的那个界面早早就已经执行过了。
所以说,在这样的情况下在两个窗口之间传数据是不是就是要先判断哪个界面先执行了,不然的话一般的方法比如引入一个friend类等等如果一个窗口类里的数据还没开始处理就被另一个窗口读取了那程序就卡主了不是?如果用信号emit,我现在就碰到这样的情况不知道该怎么做,从窗口A点开窗口B并把A的数据传给B再处理,直接用C++友元类的方法发现程序一执行就跳出,原因就是实际上B可能比A执行得更快点,他处理了一个未初始化的值就卡住了。现在想在A点按钮的时候再触发一个emit,然后在B里connect来接,但是这样试了也不行。一般讲写代码的时候必须先connect然后再emit,所以这等于说要猜哪个窗口快不是?
所以说了,这样的情况是怎么来处理的呢?以上的废话都是我一个初学者自己的理解恩。
离线xtfllbl

只看该作者 1楼 发表于: 2010-04-14
你窗口类总要初始化吧,哪个是主窗口或者说你哪个先构造,就在哪个的构造函数里connect
上海欢迎您
离线benbenmajia

只看该作者 2楼 发表于: 2010-04-14
总之当有多窗口的程序启动时,似乎是所有窗口的窗口构造函数都执行完以后才开始显示界面.

这么说是不正确的,你可以在槽函数中或者其他地方去调用另外一个函数的构造函数
安然.....
离线zonelight
只看该作者 3楼 发表于: 2010-04-17
对不起我还是不明白,会不会是因为我用的QT CREATOR的问题呢?总之我建窗体就是在项目的forms里add new一个窗体的class,然后就新建了窗体的cpp文件,在这个cpp文件里有构造函数我就在这个函数里写窗体要执行的操作。单个窗体这么做是没什么问题,问题是涉及到窗体间传值的时候就不知道该怎么做了,也没有哪里有要调用窗体初始化函数的地方什么的,可能就是因为用了qt creator太傻瓜化的问题吗?能不能告诉我具体该怎么做呢?
离线zonelight
只看该作者 4楼 发表于: 2010-04-18
这样为什么不行?
void MainWindowFirewall::opendetailwindow(int row,int column)
{
    //item_detail = new QTableWidgetItem;
    //item_detail = ui->tableWidgetFirewall->item(row,6);
    DetailWindow detail_packet_page;
    detail_packet_page.show();


}
上面那个是slot函数,这个slot的signal是双击一个QTablewidget里的一行然后执行的,我在slot里直接定义一个窗体然后显示,但是双击以后没有任何反应。不过,当我把定义这行(DetailWindow detail_packet_page)放到当前这个tablewidget所在的窗体的头文件的protected:这里面双击就可以了,为什么?如果不能在slot里定义的话那还是不行的阿。。
离线zonelight
只看该作者 5楼 发表于: 2010-04-18
如果不能把窗体执行的顺序控制住的话就谈不上窗体传值了。
快速回复
限100 字节
 
上一个 下一个