首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

把一个对话框的时间传入两外一个对话框

2013-01-06 
把一个对话框的时间传到两外一个对话框以QLabel的形式这是一个对话框中关于时间的操作,进入第一对话框开始

把一个对话框的时间传到两外一个对话框
  以QLabel的形式

这是一个对话框中关于时间的操作  ,进入第一对话框开始自动计时,当按下按钮后结束计时,并触动槽函数closeTheDialog,并把结束的时间发给第二个对话框,CallOperate()是创建第二个对话框的信号,对应的槽就是创建对话框。 问题是怎么把时间传给第二个对话框,并在QLabel上显示。
void Call::closeTheDialog(void)
{
emit(CallOperate(0));
this->close();
}


void Call::keyPressEvent(QKeyEvent *e)
{
     QDialog::keyPressEvent(e);
}

bool Call::event(QEvent *ev)
{  
    if(ev->type() == QEvent::WindowActivate)
    {
       timerTid = startTimer(1000);
    }
    else
   {
      QDialog::event(ev);
   }
}

/* Timerout处理函数 */
void Call::timerEvent(QTimerEvent *e)
{
    if (e->timerId() == timerTid)
    {
        sumSecond ++;    //当前总秒数+1

/* 设置时间提示标签 */
        SetTimeLabel(sumSecond);

        return;
    }
}


/* 更新m_hTimeLabel控件上的时间 */
void Call::SetTimeLabel(int iSumSecond)
{
    /* 时间不能小于0 */
    if( iSumSecond <= 0 )
    {
      qWarning( "Call:SetTimeLabel()--------sumSecond(%d) <= 0", sumSecond );
      return;
    }

    /* 换算时分秒 */
    int iHour, iMinute, iSecond;
    iHour   = iSumSecond/3600;
    iMinute = (iSumSecond-3600*iHour)/60;
    iSecond = iSumSecond-3600*iHour-iMinute*60;

     /* 设置为str */
    QString strTime;
 
strTime.sprintf("%02d:%02d:%02d", iHour, iMinute, iSecond ); //不在同一行时用到的。
    //通话时间和其时间不在同一行,如果要使其在一行,把下面的打开

    /* 写到控件中 */
    timeLabel->setText( strTime );

    update();
    
}

int Call::GetSumSecond()
{
    return sumSecond;//总时间
}

[解决办法]
第二个对话框的构造函数添加一个参数,第一对话框调用第二个的时候,把参数直接传进去
[解决办法]
改信号函数:
signals:
    void CallOperate(int );
在:
void Call::closeTheDialog(void)
{
emit  CallOperate(GetSumSecond());
this->close();
}

改callPerate对应的槽:
private slots:
    viod slot_calledOperate(int )

void XX::slot_calledOperate(int TimeNum)
{
// use TimeNum  in here.
}
  

热点排行