Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: Taras.ua от Октябрь 16, 2009, 09:30



Название: Qt Creator. Работа с консолью(Ubuntu).
Отправлено: Taras.ua от Октябрь 16, 2009, 09:30
Мне нужно выводить текст в консоль и считывать текст с консоли, введенный пользователем. Задача элементарная. С выводом проблем нет. А вот вводить текст у меня не получилось.
Есть два вопроса. В самом креаторе заклатка "Application Output" работает только на вывод, или должна принимать параметры?
Если в проджектс-пропертис "ран ин терминал" поставить галочку, то запускается эмулятор терминала. Но в нево программа даже не выводит ничего. Не говоря о вводе пользователем.
Вот код.
Код:
#include <QApplication>
#include <QTextStream>
int main(int argc, char *argv[])
{
    QString result = "111";
    QTextStream out(stdout);
    out << "Qt rocks!" << endl;


    QTextStream in(stdin);
    QString line;
    do
    {
        line = in.readLine();
    }
    while (!line.isNull());

    out<<line<<endl;


}
Подскажите, где ошибка.


Название: Re: Qt Creator. Работа с консолью(Ubuntu).
Отправлено: Igors от Октябрь 16, 2009, 14:24
используйте isEmpty вместо isNull


Название: Re: Qt Creator. Работа с консолью(Ubuntu).
Отправлено: Taras.ua от Октябрь 16, 2009, 17:15
используйте isEmpty вместо isNull
Это ничего не меняет. Проблема в том, что при использовании QTextStream in(stdin); программа даже ничего не выводит. Тоесть не отрабатывает
Код:
QTextStream out(stdout);
    out<<"Qt rocks!";

У меня просто сложнейший вопрос. КАК выводыть в консоль и считывать с консоли????


Название: Re: Qt Creator. Работа с консолью(Ubuntu).
Отправлено: Igors от Октябрь 16, 2009, 17:31
используйте isEmpty вместо isNull
Это ничего не меняет. Проблема в том, что при использовании QTextStream in(stdin); программа даже ничего не выводит. Тоесть не отрабатывает
Код:
QTextStream out(stdout);
    out<<"Qt rocks!";

У меня просто сложнейший вопрос. КАК выводыть в консоль и считывать с консоли????
У меня прекрасно выводит как на терминал так и в отладчик (см. attachment)

BTW: несколько дней назад я тоже поимел проблемы с консолью и теперь не считаю что это просто :)


Название: Re: Qt Creator. Работа с консолью(Ubuntu).
Отправлено: Norgat от Октябрь 24, 2009, 19:11
чтобы QTextStream сначала буферизирует передаваемые ему данные, для печать нужно сбросить буфер ф-ей flush().

вот пример кода:

Код:
#include <QtCore/QCoreApplication>
#include <QTextStream>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTextStream out(stdout);

    out << "Hello World!\n";
    out.flush();

    QTextStream inp(stdin);
    QString str = "";

    out << "BBEDITE CTPOKY: ";
    out.flush();
    inp >> str;
    out << "Bb| BBELI: " << str << endl;

    return 0;
}

сам сидел разбирался прилично))

всё прекрасно работает в как терминале запускаемом из Qt Creatora, так и в обычном терминале моего Убунту)


Название: Re: Qt Creator. Работа с консолью(Ubuntu).
Отправлено: Ubuntu_linux от Апрель 25, 2010, 01:10
А по каким причинам у меня ничего не  выводится  в консоли?, хотя сама консоль зупускается і в qt output все  выводится . ???


Название: Re: Qt Creator. Работа с консолью(Ubuntu).
Отправлено: Marat(Qt) от Апрель 25, 2010, 18:23
А по каким причинам у меня ничего не  выводится  в консоли?, хотя сама консоль зупускается і в qt output все  выводится . ???
CONFIG+=console ?


Название: Re: Qt Creator. Работа с консолью(Ubuntu).
Отправлено: Ubuntu_linux от Апрель 25, 2010, 23:11
ДА! вот:
Код
C++ (Qt)
#-------------------------------------------------
#
# Project created by QtCreator 2010-04-12T00:22:22
#
#-------------------------------------------------
 
QT       -= gui
 
TARGET = console_matrix
CONFIG   += console
CONFIG   -= app_bundle
 
TEMPLATE = app
 
 
SOURCES += main.cpp
 

А вот мой код Qt С++:
Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QtDebug>
#include <QTextStream>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
 
QTextStream Qcout(stdout);
Qcout <<"gepgmeogmeogoegoergo"<<endl;
Qcout.flush();
 
cout <<"жьупжрьужрьуержьежро" ;
cout.flush();
 
qDebug()<<"Вот несколько чисел";
 
   return a.exec();
}


Название: Re: Qt Creator. Работа с консолью(Ubuntu).
Отправлено: Ubuntu_linux от Апрель 27, 2010, 20:17
? ???