• 9641阅读
  • 2回复

关于Qt中界面跳转的问题的一些困扰,希望大家一起探讨一下 [复制链接]

上一主题 下一主题
离线jetlee2012
 

只看楼主 倒序阅读 楼主  发表于: 2010-11-08
— 本帖被 XChinux 执行加亮操作(2010-11-10) —
我现在在做一个设备的操作软件类似于操作终端的东西,在界面设计的时候遇到点问题,希望大家给点建议。

界面1,我把这个界面设为主界面是以ui Designer 设计的内容很简单有四个Button,分别是Button1(进入界面2)Button2(进入界面3)Button3(进入界面4)Button4(进入界面5).
以多继承方式继承在.cpp进行button的槽函数进行编辑,在槽函数里实现界面切换。

界面2,一个数据显示界面,里面有三个Buttonreturnbutton(点击后返回界面一),button_e(点击后进入界面3),button_s(点击进入界面4)。本界面同样用ui Designer 编辑,采用多继承法继承。

界面3,界面4,界面5.为参数设置界面。但是都有一个返回按钮返回到界面1.

我从界面1切换到界面2的函数是
                              connect(ui->Button1,SIGNAL(clicked()),this,SLOT(on_Button1_clicked()));
对应的槽响应函数是
                             void MainWindow::on_Button1_clicked()
                             {
                                   hide();
                                   form1.show();
                                   form1.Setform1Widget(this); //此处的Setform1Widget()为自己写的指针传递函数,把页面当前指针传递到下一页,用于回显。
  }


界面1 是主界面,通过界面1 的四个按钮可以进入四个分界面(没有父子关系),但是从界面2需要通过按钮跳到界面3和界面4.
这里我不知道怎么做了尝试过多种方法都不理想。

界面1(为主界面,其他界面显示的时候他隐藏),他的四个按钮对应的界面都要创建出来,不显示时也为隐藏状态(主要是为了切换显示更快些)。所以这个显示框架有五个界面,总有一个显示,其他四个隐藏。

方法1:用new 创建,每次想用创建,用完销毁。这样程序的速度会很慢,而且容易导致内存泄漏。
方法2:用指针,貌似可以但是跳页面传递指针貌似很繁琐。
方法3:用QWidgetStack,不是很熟悉,如果有高手能用此方法,望赐教最好有具体的例程代码能提供给小弟分析。


若有高手提供更好的方法,将顶礼膜拜!!!不胜感激。。。。



离线anthonymo200
只看该作者 1楼 发表于: 2010-11-09
谢谢你这行代码connect(ui->Button1,SIGNAL(clicked()),this,SLOT(on_Button1_clicked()));的提示。 在QT3里面要现在对话框, 需要把响应函数设置为槽函数才可以, 在QT4里面没有必要设置, 或许QT4是自动设置为槽函数。
离线jetlee2012

只看该作者 2楼 发表于: 2010-11-11
现在有一种的解决方案,方案二,采用指针传递。
实现了正常跳转,但是不知道会不会内存泄漏。。。

我从界面1进入界面二的时候(直接创建一个实体类,用show(),函数显示),把界面1的指针传给界面二(用于回显),从界面二进入界面三的时候,在界面2里面同样再创建一个实体类,把刚才来自界面1的指针在次传给界面3(从界面2传到界面3,用于界面3回显界面1).现在这种状况就不能用隐藏了。除了界面1,不显示的时候是隐藏的,其他的界面被切换后都删除,界面2切换到界面3时,close()界面2,show()界面3.不知道这样会不会导致内存泄漏。。。按分析来讲在close()以后页面是通过内存管理机制销毁的。。。不能确定。。。

望高手指点一二。。。
快速回复
限100 字节
 
上一个 下一个