PDA

Tam Sürümünü Görmek İçin : QT'de QString ile tür uyumsuzluğu


depones
17/10/2007, 00:35
Merhaba,

void GuiGMemoryStatus::on_pushButton_clicked()
{
SKD::GMemoryStatus mem;
std::ostringstream oss;

oss << mem.GetLength();

ui.lineEdit->setText(QString("").fromStdString(oss.str()));
}

Yukarıdaki kod bir PushButton'a tıklandığında çalışacak. SKD isimalanındaki GMemoryStatus sınıfının GetLength() fonksiyonu size_t türüne geri dönüyor. Fonksiyonun geri dönüş değerini bir ostringstream nesnesine okuyorum. QT'de, setText() fonksiyonunda tür dönüşümü ile ilgili bir hata yapmış olabileceğimi düşünüyorum. Çünkü, programı çalıştırıp PushButton'a tıkladığımda ilgili LineEdit'te alakasız bir değer olarak 0 çıkıyor.

Yukarıdaki kod parçasında bir hata tespit ederseniz ve paylaşırsanız memnun olurum.

İyi çalışmalar.


acehreli
17/10/2007, 01:23
Cozum oldugunu dusunmuyorum ama fromStdString' static bir islev oldugu icin, onu kullanmak icin bos bir QString olusturmana gerek yok. Su da calisir:

ui.lineEdit->setText(QString::fromStdString(oss.str()));

Ali

hgedek
17/10/2007, 16:03
QString::fromStdString() tabirini kullanmalısın.Bu kullandığın yapının ne olduğunu anlamadım
(" ").fromStdString() = ?

acehreli
18/10/2007, 00:05
QString("") ile ici bos bir QString olusturuyor ve onun fromStdString fonksiyonunu cagiriyor. O fonksiyonun dOndUrdUgU gecici nesne de setText fonksiyonuna gonderiliyor.

Benim de soyledigim gibi, QString::fromStdString kullanimi daha dogal ama sart degil.

Ali