Gstreamer pipeline failed to open IP camera in cv::VideoCapture function?

I am so lucky that I have found this linkhttp://stackoverflow.com/questions/23570572/using-custom-camera-in-opencv-via-gstreamer,from which I changed my code to

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/videoio.hpp>

int main(void)
{
    cv::VideoCapture cap("rtspsrc location=rtsp://admin:admin12345@192.168.1.64:554/h264/ch33/main/av_stream" latency=0 ! decodebin ! <b>videoconvert </b>! appsink");

    if( !cap.isOpened() )
    {
        std::cout << "Not good, open camera failed" << std::endl;
        return 0;
    }

    cv::Mat frame;
    while(true)
    {
        cap >> frame;
        cv::imshow("Frame", frame);
        cv::waitKey(1);
    }
    return 0;
}

and it has real-time result without delay.PS:When I used 19201080 video,there also has delay and caton between video frames,so I changed resolution to 1280720,and it is real time now.
Now I need to fix the problem that how to process the mat and present the processed opencv mat to qt GUI.I have tested and found that this thread’s signal cannot goto qt GUI main thread.Oh!Headache!