• 9390阅读
  • 5回复

为什么对话框弹闪一下就不见了,附代码 [已解决,非常感谢各位大侠的指点!:)] [复制链接]

上一主题 下一主题
离线ndyw
 

只看楼主 倒序阅读 楼主  发表于: 2008-07-17
— 本帖被 XChinux 执行加亮操作(2008-07-17) —
关键词: 对话框
我在程序界面上放了个按纽,打算让它在受到点击时弹出个对话框,对话框确实出来了,可是闪了一下又不见了,为什么啊?

全部代码在附件中,热心的大虾帮我看看,谢谢

----------------------------头文件-----------------------------------
#ifndef ANTIQQ_H
#define ANTIQQ_H

#include<QDialog>
#include"ui_AntiQQ.h"

class AntiQQ:public QDialog,public  Ui_MainWindow
{
    Q_OBJECT
public:
    AntiQQ(QWidget *parent = 0);
private slots:
    void click();
};

#endif // ANTIQQ_H


-------------------------------实现文件--------------------------
#include"AntiQQ.h"
#include"Login.h"

AntiQQ::AntiQQ(QWidget *parent):QDialog(parent)
{
    setupUi(this);
    connect(commandLinkButton_2,SIGNAL(clicked()),this,SLOT(click()));//click()是继承自pushbutton的函数
}

void AntiQQ::click()//为什么不能用register的函数名啊?
{
    Login a;
    a.show();
}

全部代码在附件中,热心的帮我看看,谢谢
[ 此贴被ndyw在2008-07-18 20:11重新编辑 ]
描述:几乎只有界面的程序
附件: Mychatroom.rar (52 K) 下载次数:5
有问题请教别人时,俺都先行谢过:)
离线XChinux

只看该作者 1楼 发表于: 2008-07-17

void AntiQQ::click()//为什么不能用register的函数名啊?
{
    Login a;
    a.show();
}

show()方法执行完后会立马返回的,而此时,a对象的作用域结束了,被析构了。
请使用exec()方法,它直到窗口关闭才返回。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线water_wf

只看该作者 2楼 发表于: 2008-07-17
void AntiQQ::click()//为什么不能用register的函数名啊?
{
    Login a;
    a.show();
}
->
Login *a = new Login(this);
a->show();
离线weizhy
只看该作者 3楼 发表于: 2008-07-17
同意XChinux的说法,应该改为:

Login a;
a.exec();

这样在click函数结束后资源被自动释放
离线water_wf

只看该作者 4楼 发表于: 2008-07-18
同意楼上的,我的那个方法需要delete a;
离线foxyz

只看该作者 5楼 发表于: 2008-07-18
void AntiQQ::click()//为什么不能用register的函数名啊?
{
    Login a;
    a.show();
}

请改成:
void AntiQQ::click()//为什么不能用register的函数名啊?
{
    Login a;
    a.show();
    a.exec();
}

    a.exec();用于建立该dialog的消息循环
快速回复
限100 字节
 
上一个 下一个