• 8994阅读
  • 9回复

qt2多窗口编程 [复制链接]

上一主题 下一主题
离线weller_huang
 

只看楼主 倒序阅读 楼主  发表于: 2010-11-03
— 本帖被 XChinux 执行加亮操作(2010-11-04) —
我目前在2440上学习QT。有一个问题想请教大家:
1。我有两个窗口A, B.默认程序起来时,显示的是A。按下A上的一个按钮,显示B窗口。
这个我目前已经实现,我想知道的是,B中如何获得A的指针?
我现在A中是通过在class A中定义个class B的指针来实现显示B的。就是bp= new B();
那么B中我如何得到A的指针呢?

2。bp= new B();和bp= new B(this);的区别看上去是一个没有窗口,一个有父窗口。
编程使用哪个会比较好?

3。A如何获取B关闭的事件,从而让这个事件触发A来做一些事情 ?


离线hqd_2008
只看该作者 1楼 发表于: 2010-11-07
这是screen管理的问题吧,
要看你自己怎么做了
离线kongfuziyue
只看该作者 2楼 发表于: 2011-04-15
不能沉
离线dragonfever
只看该作者 3楼 发表于: 2011-04-17
回 楼主(weller_huang) 的帖子
楼主的pd=new B();具体是怎么定义的啊?能不能把源代码发上来参考下先
我是QT新手,现在正在设计一个同楼主类似的两窗口程序,在窗口1的nextButton上点击实现进入窗口2,我参考楼主的方法在窗口一的widget类中定义窗体2的指针如下:
dialogform *pd=new dialogform();
其中dialogform是我的第二个窗口的类名,然后在槽on_nextButton()中这样定义:
this->hide();
pd->show();
结果编译显示错误信息如下:

mainwinform.h:34: error: ‘new’ cannot appear in a constant-expression
mainwinform.h:34: error: ISO C++ forbids initialization of member ‘pd’
mainwinform.h:34: error: making ‘pd’ static
mainwinform.h:34: error: invalid in-class initialization of static data member of non-integral type ‘dialogform*’
make: *** [.obj/main.o] 错误 1

请教各位大侠指点迷津!
离线dragonfever
只看该作者 4楼 发表于: 2011-04-17
回 3楼(dragonfever) 的帖子
问题解决!
不应该在窗体1的mainwinform.h中声明pd指针,而是在槽函数定义头文件mainformwin.ui.h中声明,修改后的mainwinform.ui.h内容如下:

#include "dialogform.h"

void mainwinform::on_nextButtonclicked()
{
dialogform* pd;
pd=new dialogform(this);
hide();
pd->show();
}

现在编译通过,在qvfb中运行基本达到窗口跳转的效果,但运行时终端显示如下错误:

......
Semop lock failure 标识符已删除
Semop unlock failure 标识符已删除
root@ubuntu:/home/lf/qt-sqlite/test# Semop lock failure 无效的参数
Semop unlock failure 无效的参数
Semop lock failure 无效的参数
......
不知道是不是使用指针造成的,疑惑中...

不晓得怎么回事,第三次运行时,就没有出现这些类似的信息,运行很成功,感叹程序真是个诡异的存在。。。
离线mmofan
只看该作者 5楼 发表于: 2011-05-04
楼主,可以把源码给我发一份吗,我只想实现“我有两个窗口A, B.默认程序起来时,显示的是A。按下A上的一个按钮,显示B窗口。”这个功能,实在不知道如何在程序中调用designer创建的ui文件,先谢楼主了,邮箱:zuotianyiji@163.com,再次感谢!!!!
离线苏随拉
只看该作者 6楼 发表于: 2011-05-10
我也想要代码》》》。。。。。。。。。谢谢。发903002246@qq.com
离线gzcgjy
只看该作者 7楼 发表于: 2011-06-16
可以发我邮箱吗,我也需要啊!!
kycgjy@163.com谢谢
离线caizhenbin
只看该作者 8楼 发表于: 2011-07-10
我是建立一个类C,来管理A,B。
main函数启动C,C里面new A,A想切到B就给C发信号,C调用A.close,并new B。
离线angel0007

只看该作者 9楼 发表于: 2014-03-20
这个要mark
hallo
快速回复
限100 字节
 
上一个 下一个