How to include .txt on Qt
-
Yes but i dont want to display one picture so the label is here just for display the picture from my QMap my final picture with all the QMap's image is display in the label_3
sorry but i loose you ^^
the if (IsClose .. doesnt make sense ? i put it after the else because if the bool dont return true we can't continue no?
""BaseColor fits you are just trying to show each and every element of Costs.""
so maybe replace "foreach( QRgb key, Costs.keys() )" by just "foreach(only the image)" can i write ImageName.key ? -
@Payx
I think what @SGaist says is thatif
Costs
containscolour.rgb()
you can do what you want
else you should go though theCosts
to search if there is aBaseColor
that is close tocolour
and if there is one, you can do what you wantwhat you do now is
ifCosts
containscolour.rgb()
you do what you want
else test ifBaseColor
is close tocolour
if it is then you go though theCosts
and do what you wantthe difference is that
you are not search for aBaseColor
that is close tocolour
( which is aforeach
thenif
)
but test ifBaseColor
is close tocolour
and go though theCosts
( which is aif
thenforeach
)
and theBaseColor
is unknown since there is nokey
defined before it -
No, what you are doing is that if colour is close to base colour you loop on your map.
What you want to do is loop on the map and if any of the colour ÌsCloseColour` then use that one.
As for the build error, look where you declared key and where you are currently using it.
-
@SGaist said in How to include .txt on Qt:
What you want to do is loop on the map and if any of the colour ÌsCloseColour` then use that one.
Sorry if i don't understand well but """IsCloseColor(BaseColor, colour) == true""" dont mean that if any of the color IsCloreColour ?
-
No, that function checks the whether the colours passed as parameters are close.
What you want to do is check which one of the map entries is close to the reference.
Take a look at your code and the order in which you wrote it. You are not testing the content of the Costs map, you are just checking whether
colour
is close to BaseColor which currently you can't create since your key variable is inside your loop and not outside where you declared BaseColor. -
-
Looks better, yes.
Don't forget to break out of the loop once you found a match.
-
so it compile but i got the 3 same errors :
QPixmap::scaled: Pixmap is a null pixmap setGeometry: Unable to set geometry 5x13+640+280 on QWidgetWindow/'QLabelClassWindow'. Resulting geometry: 120x13+640+280 (frame: 8, 31, 8, 8, custom margin: 0, 0, 0, 0, minimum size: 0x0, maximum size: 16777215x16777215). yep its no good
void Remplissage(QImage& image, const QPoint& topLeft, const QSize& rectangle, const QColor& colour) { int maxX = topLeft.x() + rectangle.width(); int maxY = topLeft.y() + rectangle.height(); for(int x = topLeft.x(); x < maxX; ++x) { for(int y = topLeft.y(); y < maxY; ++y) { image.setPixelColor(x, y, colour); if (Costs.contains( colour.rgb() )) { 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(); } else { foreach( QRgb key, Costs.keys() ) { QColor BaseColor( key ); if (IsCloseColor(BaseColor, colour) == true){ CostInfo& ci = Costs[colour.rgb()]; QLabel abc; QPixmap pix( ci.ImageName ); QPixmap scaledPix = pix.scaled( 8, 8, Qt::KeepAspectRatio, Qt::SmoothTransformation ); abc.setPixmap(scaledPix); abc.show(); } else { qDebug() << "yep its no good"; } } } } }}
i put my code here
-
Because you are still trying to get the wrong entry from your map. If you enter your foreach loop, it means that
colour
can't be found in your map thus you can't use it to get the value from the map.IsCloseColor
tells you thatBaseColor
andcolour
are close, then you must usekey
to get the CostInfo you want. -
yes
by the way, you don't need to write
if( IsCloseColor( BaseColor , colour ) == true )
explicitly. Yout can writeif( IsColseColor( BaseColor , colour ) )
since the return value ofIsCloseColor
is already abool
andif
can test it -
Ok so it compile,
but i have the same error again :
yep its no good yep its no good yep its no good setGeometry: Unable to set geometry 8x7+640+280 on QWidgetWindow/'QLabelClassWindow'. Resulting geometry: 120x7+640+280 (frame: 8, 31, 8, 8, custom margin: 0, 0, 0, 0, minimum size: 0x0, maximum size: 16777215x16777215).
*1000
-
Again checkout what you get, whether what it contains is valid.
And again 2, you are creating QLabels that will be destroyed before they can be shown.
-
@SGaist said in How to include .txt on Qt:
And again 2, you are creating QLabels that will be destroyed before they can be shown.
So maybe write "QLabel abc;" in my .h ?
@SGaist said in How to include .txt on Qt:
Again checkout what you get, whether what it contains is valid.
i have
CostInfo& ci = Costs[BaseColor.rgb()]; QPixmap pix( ci.ImageName );
Maybe i don't understand well this 2 lines, i explain what i understand and tell me if i'm wrong.
The first line put in my variable ci the "line" referent to my BaseColor ( it stock the Costs (who have a QString and a Int))
the second line create a pixmap from the ImageName referent to my BaseColor. So something like (QPixmap pix(:/img/ballepeche.png))
-
Hi
Make sure that
BaseColor.rgb() actually give a 100% MATCH else u insert empty one with no file name and ImageName will be empty!I think u are using it wrongly.
try
if ( Costs.contains( BaseColor.rgb()))
qDebug () << "its OK with base color";
else
qDebug () << " base color had no match!!"before
CostInfo& ci = Costs[BaseColor.rgb()];
QPixmap pix( ci.ImageName );As if base color is NOT 1 of the colors in qmpa, it dont work and image is empty.
-
its OK with base color setGeometry: Unable to set geometry 8x7+640+280 on QWidgetWindow/'QLabelClassWindow'. Resulting geometry: 120x7+640+280 (frame: 8, 31, 8, 8, custom margin: 0, 0, 0, 0, minimum size: 0x0, maximum size: 16777215x16777215). 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 its OK with base color
So no problem about BaseColor !