• 3457阅读
  • 1回复

关于信号与槽的连接的问题 [复制链接]

上一主题 下一主题
离线holyshit
 
只看楼主 倒序阅读 楼主  发表于: 2009-09-15
class CAlarmLevMenu: public QObject
{
    Q_OBJECT
public:
    CAlarmLevMenu();
    ~CAlarmLevMenu();

public:
    QMainWindow *m_pAlarmLevDlg;  
    QDialog *m_pAlarmSetDlg;

private slots:
    void AlarmSetDlgClose(QObject *pObj);
    void DlgClose(QObject * pObj);
}

通过点击m_pAlarmLevDlg对话框上的一个按钮会生成m_pAlarmSetDlg对话框。如果点击m_pAlarmSetDlg对话框上的关闭按钮,我希望做的是销毁m_pAlarmSetDlg指针。

生成m_pAlarmLevDlg如下过程:
if(m_pAlarmLevDlg == NULL)
{
  m_pAlarmLevDlg = new QMainWindow(m_pICore->GetWindow());
    //////////////////////////////中间有几句是为这个对话框创建按钮的///////////////////////////
    connect(m_pAlarmLevDlg, SIGNAL(destroyed(QObject*)), this, SLOT(DlgClose(QObject*)));通过这个为m_pAlarmLevDlg创建关闭的对话框的信号与槽的连接来释放指针。
(PS:关闭这个对话框时通过调试有进入槽函数DlgClose进行销毁指针)
}

生成m_pAlarmSetDlg的过程如下:
点击了m_pAlarmLevDlg上的一个按钮之后生成。
if(m_pAlarmSetDlg == NULL)
{
  m_pAlarmSetDlg = new QDialog(m_pICore->GetWindow());
    //////////////////////////////中间有几句是为这个对话框创建按钮的///////////////////////////
    connect(m_pAlarmSetDlg, SIGNAL(destroyed(QObject*)), this, SLOT(AlarmSetDlgClose(QObject*)));
    通过这个为m_pAlarmSetDlg传教关闭对话框时的信号与槽的连接来释放m_pAlarmSetDlg指针
}

该槽函数实现如下:
void CAlarmLevMenu::AlarmSetDlgClose(QObject* pObj)
{
    delete m_pAlarmSetDlg;
    m_pAlarmSetDlg = NULL;
}

关闭这个对话框时并没有进入槽函数,应该是信号未被触发。


请教各位大哥大侠 和版主,这是什么情况导致的?该怎么解决呢?
雪地裸奔跪求啦~~


离线holyshit
只看该作者 1楼 发表于: 2009-09-15
希望各位大侠帮帮忙,有什么想法的都可以说出来,说不定就能帮助到我啦
快速回复
限100 字节
 
上一个 下一个