找回密码
 立即注册
收起左侧

关于窗口闪退的解决

5
回复
8402
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2015-7-3 14:16:34 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
例如:
           void MainWindow::slot()
           {
                  QDialog dlg ;
                  dlg.show();
           }


运行后发现窗口一闪而过,这是因为dlg的后面的大括号,dlg超出了作用域而
被析构掉,所以窗口不见了,解决方法:

1. 将dlg作为类的成员,而不是在函数内部。
2. 在dlg前面添加static,作为静态成员。
3.将dlg用 new 分配到 heap 中。

个人推荐第一种。


回复

使用道具 举报

尚未签到

2015-7-3 15:39:33 显示全部楼层
我也推荐第一种
回复 支持 反对

使用道具 举报

累计签到:7 天
连续签到:1 天
2015-7-3 16:10:57 显示全部楼层
你好,看到您回复,想问一下,如何在QT中是实现两个类的相互引用,在类A总点击按钮进入B,然后在B中点击按钮返回A,我在实现的时候,遇到了困难。能帮着解答一下吗?
回复 支持 反对

使用道具 举报

累计签到:83 天
连续签到:1 天
2016-1-20 09:48:11 显示全部楼层
啦小啦 发表于 2015-7-3 16:10
你好,看到您回复,想问一下,如何在QT中是实现两个类的相互引用,在类A总点击按钮进入B,然后在B中点击按 ...

signals:
connect。。。。。。
回复 支持 反对

使用道具 举报

累计签到:83 天
连续签到:1 天
2016-1-20 12:51:33 显示全部楼层
#include <iostream>

using namespace std;

template < class A >
class B
{
public:
typedef void* void_pointer;
typename A::int_pointer p;//用到A中的定义
int j;
};

class A
{
public:
typedef int* int_pointer;
B<A>::void_pointer p;//用到B中的定义
int i;
};

int main()
{

return 0;
}

模板!
回复 支持 反对

使用道具 举报

尚未签到

2016-3-21 07:38:02 显示全部楼层
大家看怎么样 我认为很好.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了