How to include .txt on Qt
-
@Payx said in How to include .txt on Qt:
scaledPix
Sounds like scaledPix is not initialize as it should , which often
comes from not being able to load a file.Make sure the image you are scaling, is indeed valid. (loaded)
-
Yes That would make the pix valid.
To get the error " Pixmap is a null pixmap" for scaledPix means that
it was not valid. It was empty. so if it came from a scale function, it means
that the image u scaled to get scaledPix was empty.Happy new Year :)
-
QLabel abc; // int Cost = ci.Cost; QPixmap pix( ci.ImageName ); QPixmap scaledPix = pix.scaled( 8, 8, Qt::KeepAspectRatio, Qt::SmoothTransformation ); abc.setPixmap(scaledPix); abc.show();
i have this :
so the error come from "QPixmap pix" who is empty
so the line "QPixmap pix( ci.ImageName );" dont create a pixmap from my QMap ?
-
- QPixmap pix( ci.ImageName );" dont create a pixmap from my QMap ?
That would be my guess yes.
You can check pix with isNull()
-
@Payx said in How to include .txt on Qt:
if (pix.isNull()){
QPixmap pix(":/img/ballebleue.png");
};Well that would not really change anything as you create a new local pix and its not related to the "pix" outside
You should find out if its invalid and then why it isif (pix.isNull()){
qDebug() << "yep its no good";
return;
}; -
okay so i have that.
yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good QImage::pixel: coordinate (144,540) out of range QImage::pixel: coordinate (145,540) out of range QImage::pixel: coordinate (146,540) out of range QImage::pixel: coordinate (147,540) out of range QImage::pixel: coordinate (148,540) out of range QImage::pixel: coordinate (149,540) out of range QImage::pixel: coordinate (150,540) out of range QImage::pixel: coordinate (151,540) out of range yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good yep its no good QImage::pixel: coordinate (168,540) out of range QImage::pixel: coordinate (169,540) out of range QImage::pixel: coordinate (170,540) out of range QImage::pixel: coordinate (171,540) out of range QImage::pixel: coordinate (172,540) out of range QImage::pixel: coordinate (173,540) out of range QImage::pixel: coordinate (174,540) out of range QImage::pixel: coordinate (175,540) out of range QImage::pixel: coordinate (168,541) out of range QImage::pixel: coordinate (169,541) out of range QImage::pixel: coordinate (170,541) out of range QImage::pixel: coordinate (171,541) out of range QImage::pixel: coordinate (172,541) out of range QImage::pixel: coordinate (173,541) out of range QImage::pixel: coordinate (174,541) out of range QImage::pixel: coordinate (175,541) out of range QImage::pixel: coordinate (168,542) out of range QImage::pixel: coordinate (169,542) out of range QImage::pixel: coordinate (170,542) out of range QImage::pixel: coordinate (171,542) out of range QImage::pixel: coordinate (172,542) out of range QImage::pixel: coordinate (173,542) out of range QImage::pixel: coordinate (174,542) out of range
that's mean that my pix is null right?
-
Yes i have that exactly :http://hpics.li/cc11b5c
-
@Payx
Oh, they are under IMGRight click one image file.
Find Get Path
should be something like:/IMG/filename.xxx
Fix the names in the table.
As far as i recall they start like ":/filename.xxx" and that dont match.Note: Here i do NOT have them in a sub folder like you have (img) so path is :/p1.png
-
QMap<QRgb, CostInfo > Costs = { { QColor(255 , 0 , 0 ).rgb(), { ":/img/fraise.png", 10 }}, { QColor(0 , 255 , 0 ).rgb(), { ":/img/balleverte.png", 20 }}, { QColor(0 , 0 , 255 ).rgb(), { ":/img/balebleue.png", 20 }}, { QColor(255 , 255 , 255 ).rgb(), { ":/img/balleblanche.png", 20 }}, { QColor(255 , 128 , 0 ).rgb(), { ":/img/ballepeche.png", 20 }}, { QColor(0 , 0 , 0 ).rgb(), { ":/img/noir.png", 20 }}, { QColor(102 , 51 , 0 ).rgb(), { ":/img/marron.png", 20 }}, { QColor(255 , 102 , 78 ).rgb(), { ":/img/rose.png", 20 }}, { QColor(0 , 204 , 204 ).rgb(), { ":/img/turquoise.png", 20 }}, { QColor(255 , 178 , 102 ).rgb(), { ":/img/beige.png", 20 }}, { QColor(76 , 0 , 153 ).rgb(), { ":/img/violet.png", 20 }}, { QColor(100 , 100 , 100 ).rgb(), { ":/img/gris.png", 20 }}, };
i didnt mention that but i had already changed the path
-
@Payx
oh, it seems correct. You checked they are truly correct?Please qDebug() << ci.ImageName to verify the variable contains the path from
the table.just above where you try to make pixmap
qDebug() << "check me--->" << ci.ImageName;
QPixmap pix( ci.ImageName ); -
Are you sure you are retrieving a valid value from your map ?
-
From what you wrote before, ci.ImageName is empty, correct ?
If so, check the key that you use to retrieve the data from the map. If not part of the map, depending on the technique used, you will get a default constructed object.
-
Yes it's empty.
foreach( QRgb key, Costs.keys() ) { QColor BaseColor( key ); if (Costs.contains( colour.rgb() ) || IsCloseColor(BaseColor, colour) ) { CostInfo& ci = Costs[colour.rgb()]; QLabel abc; // int Cost = ci.Cost; qDebug() << "check me--->" << ci.ImageName; QPixmap pix( ci.ImageName ); if (pix.isNull()){ qDebug() << "yep its no good"; return; }; QPixmap scaledPix = pix.scaled( 8, 8, Qt::KeepAspectRatio, Qt::SmoothTransformation ); abc.setPixmap(scaledPix); abc.show();
it's what i have.
-
Your logic is flawed. If Costs contains
colour.rgb()
then you can go on with the rest of your logic else you should go through your map and useIsCloseColor
to determine which key is good. Then you can use that key to go further.