PDA

View Full Version : QString display error



Devoraz
5th August 2009, 10:03
is there anything wrong with the following code? how come the %s display a square insstead of the word i want??


if (nodeData.addr==1)
{
nodeName = "room";
}
else if (nodeData.addr==2)
{
nodeName = "bed";
}
else if (nodeData.addr==3)
{
nodeName = "kitchen";
}
else
{
nodeName = "End Device";
}

if (nodeData.addr==0) //node 0
{
// Write node number
//qsTemp.sprintf("Node: %d", nodeData.addr);
qsTemp.sprintf("Access Point");
//xpainter->setFont(addrFont);
painter->setFont(timeFont);
painter->drawText(-50,-15,100,20,Qt::AlignCenter , qsTemp,0);
}
else
{
// Write node number
qsTemp.sprintf("%s %d" ,nodeName, nodeData.addr );
//xpainter->setFont(addrFont);
painter->setFont(timeFont);
painter->drawText(-50,-22,100,20,Qt::AlignCenter , qsTemp,0);
}

yogeshgokul
5th August 2009, 10:08
Use this instead.

QString::arg

Exmaple:

QString i; // current file's number
QString total; // number of files to process
QString fileName; // current file's name
QString status = QString("Processing file %1 of %2: %3")
.arg(i).arg(total).arg(fileName);

Devoraz
5th August 2009, 10:18
Use this instead.


Exmaple:

QString i; // current file's number
QString total; // number of files to process
QString fileName; // current file's name
QString status = QString("Processing file %1 of %2: %3")
.arg(i).arg(total).arg(fileName);



i dun see how can qstring::arg applied to my code..

yogeshgokul
5th August 2009, 10:27
i dun see how can qstring::arg applied to my code..
Replace sprintf with QString::arg.

wagmare
5th August 2009, 10:32
else
{
// Write node number
qsTemp.sprintf("%s %d" ,nodeName, nodeData.addr );
//xpainter->setFont(addrFont);
painter->setFont(timeFont);
painter->drawText(-50,-22,100,20,Qt::AlignCenter , qsTemp,0);
}

this can be like this


QString value = QString("Name:%1 and Address:%2").arg(nodeName).arg(QString::number(nodeData.addr, 16));
painter->drawText(-50,-22,100,20,Qt::AlignCenter , value,0);

Devoraz
5th August 2009, 10:36
Replace sprintf with QString::arg.


if (nodeData.addr==1)
{
nodeName = "room";
}
else if (nodeData.addr==2)
{
nodeName = "bed";
}
else if (nodeData.addr==3)
{
nodeName = "kitchen";
}
else
{
nodeName = "End Device";
}

the if else statement share the same variable QString nodeName, u sure the %1 can work? i tried it cant work.

Devoraz
5th August 2009, 10:45
else
{
// Write node number
qsTemp.sprintf("%s %d" ,nodeName, nodeData.addr );
//xpainter->setFont(addrFont);
painter->setFont(timeFont);
painter->drawText(-50,-22,100,20,Qt::AlignCenter , qsTemp,0);
}

this can be like this


QString value = QString("Name:%1 and Address:%2").arg(nodeName).arg(QString::number(nodeData.addr, 16));
painter->drawText(-50,-22,100,20,Qt::AlignCenter , value,0);

OMG~ it works. thanks!! my code work as well.


QString value = QString("%1 %2").arg(nodeName).arg(nodeData.addr);
painter->setFont(timeFont);
painter->drawText(-50,-22,100,20,Qt::AlignCenter , value,0);