As far as I know that's not really possible using the fixed function pipeline (given your input texture) due to how texture lookup works (it's more obvious when trying to add perspective by stretching a rectangle). I think if you try Laurent's idea it might work, but could also have an artifact line where the two triangles connect (see this SO issue (http://stackoverflow.com/questions/25108996/how-to-texture-a-random-convex-quad-in-opengl)).
As a random idea, I'd use a simple shader, something like my example here on Shadertoy (https://www.shadertoy.com/view/ltKXzw).
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
// Get the uv coordinates (shader toy specific)
vec2 uv = fragCoord.xy / iResolution.xy;
// Horizontal offset (start in the middle)
uv.x -= .5;
// Scale based on y coordinate
uv.x /= (1. - uv.y);
// Get the actual color value from the Sampler2D
fragColor = texture2D(iChannel0, uv);
}
While you can't transfer this code 1:1 to SFML (you'll have to setup the uniforms etc. which shouldn't be too hard), it should give you an idea on how you could do it. Note that this requires the top vertex to have (0.5, 0) as its UV coordinates. The other two use (0, 1) and (1, 1).