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