读书人

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

发布时间: 2013-01-06 15:44:47 作者: rapoo

把一个对话框的时间传到两外一个对话框
以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.
}

读书人网 >QT开发

热点推荐