LKBEN11163: QTextStream does not print when wanted. The output comes later than expected!


This article has not been checked!

LKB | Created: 02/04/2020 | Version: 0 | Language: EN | Rating: 0 | Outdated: False | Marked for deletion: False

Author: Wim Peeters - Keskon GmbH & Co. KG


Symptom

You use q QTextStream for writing output on the console. QTextStream is connected to stdout.

Cause

none

Solution

A QTextStream steam is buffered and this can lead to the above problem. The text you write to the stream is waiting to be written to the device. To do this at once you can use two techniques.

1. You can use the flush() function. This will fluch all the buffered data and write it to the stream.
2. You can use the "<< endl" which will implicitly call the flush function.

Please note that "\n" is not the same as "endl". "\n" will not call the flush routine. Also note that in earlier version of Qt did not have this feature. It has been ficed so it reacts al in the STL. (= standard template libraries)

So
<< endl
 is equivalent to
<< "\n" << qout.flush();

In this case qout is defined as QTextStream qout(stdout).

About the Author

Wim Peeters is electronics engineer with an additional master in IT and over 30 years of experience including time spent in support, development, consulting, training and database administration. Wim has worked with SQL Server since version 6.5. He has developed in C/C++, Java and C# on Windows and Linux in different European countries and different European languages. He writes knowledge base articles to solve IT problems and publishes them on the Lubby Knowledge Platform where he is one of the most important contributors and the main developer.

Disclaimer:

The information provided in this document is intended for your information only. Lubby makes no claims to the validity of this information. Use of this information is at own risk!