• 6668阅读
  • 5回复

[提问]求助:关于两个窗口互相调用的问题 [复制链接]

上一主题 下一主题
离线lazijiding
 

只看楼主 倒序阅读 楼主  发表于: 2013-09-10
有A,B两个窗口,我希望他们可以互相调用,就是按下A窗口上的按钮,B窗口会响应,按下B窗口的按钮,A窗口也会响应。

如果只是单向的A按下按钮B响应,我是这样做的:
在A的头文件里面#include "B.h",然后定义FormB b,
在CPP文件里面链接槽函数connect(this,SIGNAL(aa()),&b,SLOT(bb()));就可以了,

但是如果想要互相调用的话,A的头文件里面#include "B.h",B的头文件里面#include "A.h",编译无法通过,请教一下要怎么做?
离线dbzhang800

只看该作者 1楼 发表于: 2013-09-10
引用楼主lazijiding于2013-09-10 15:43发表的 求助:关于两个窗口互相调用的问题 :
但是如果想要互相调用的话,A的头文件里面#include "B.h",B的头文件里面#include "A.h",编译无法通过,请教一下要怎么做?

A的头文件里面不要#include "B.h",B的头文件里面也不要#include "A.h"。

头文件中使用 前置声明,include语句放于A.cpp/B.cpp中。
离线lazijiding

只看该作者 2楼 发表于: 2013-09-10
回 1楼(dbzhang800) 的帖子
那请教一下在CPP文件里#include "B.h"以后要怎么做啊?跟在头文件里有点不一样
我是这样做的但是不行:
    Formpz fpz;
    fpz.show();



    Formpz fpz;
    connect(this,SIGNAL(cclicked()),&fpz,SLOT(aclicked()));

这么做窗口根本打不开,请教一下要怎么修改?谢谢
离线dbzhang800

只看该作者 3楼 发表于: 2013-09-10
在Qt中,尽可能多用指针

Formpz *fpz = new Formpz(...);

delete pfz; //
离线lazijiding

只看该作者 4楼 发表于: 2013-09-11
回 3楼(dbzhang800) 的帖子
谢谢你的回答,但是我还是有些地方不明白
Formpz *fpz = new Formpz(...); fpz->show();
这样是不是等于新建了一个跟Formpz一样的新窗口而不是原来的formpz了呢?我对formpz做过的修改也不会保留。而且多按几下按钮就会弹出好几个新窗口。
请问怎么打开原来的formpz呢?就像在头文件里#include "B.h",CPP文件里直接fpz.show();的效果一样
本人菜鸟,如果问的问题太弱智请多包涵
离线jdwx

只看该作者 5楼 发表于: 2013-09-11
这样:main里new出这两个窗口,显示a(show)就隐藏b(hide)。
a里显示b的按钮槽{
hide();
b->show();这里要取得b的指针,一般是在a里用一个类变量。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个