Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
2 / 1 / 1
Регистрация: 01.04.2019
Сообщений: 13

QProcess.readAll() не работает

08.12.2020, 10:02. Показов 6558. Ответов 2

Студворк — интернет-сервис помощи студентам
Создаю обыкновенное оконное приложение, самое простое, запускаю процесс и пытаюсь считать данные. вывод пустой.

mainwindow.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
private slots:
    void on_pushButton_clicked();
 
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
#include <QProcess>
#include <QDebug>
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
 
void MainWindow::on_pushButton_clicked()
{
    QProcess process(this);
    process.start("/home/ubuntu/dir1/writetxt");
    process.waitForReadyRead(-1);
    qDebug() << process.readAll();
}
main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
#include "mainwindow.h"
 
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}
в качестве процесса запускаю это приложение

mainwindow.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QDebug>
#include <QTime>
 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
private slots:
    void on_pushButton_clicked();
 
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
 
void MainWindow::on_pushButton_clicked()
{
    for (int i = 0; i < 100; i++) {
        qDebug() << QTime::currentTime().toString("hh:mm:ss");
    }
}
main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "mainwindow.h"
 
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    qDebug() << "hi";
    return a.exec();
}
что я делаю не так?
кстати, соединение слота и сигнала readyRead() у меня тоже не работает.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2020, 10:02
Ответы с готовыми решениями:

QProcess не работает write, или как отобразить результат выполнения команды
Здравствуйте, есть код перехвата консоли. void MainWindow::on_pushButton_clicked() { this-&gt;proc = new QProcess(this); ...

SIGSEGV при QIODevice::readAll()
Непойму, почему иногда вылазит такая ошибка: Объект QNetworkAccessManager издает сигнал finished(QNetworkReply * reply) Далее...

Не работает метод ReadAll (ReadTextFile = f.ReadAll)
Машина: Win 2000 Pro IIS 5.0 MSIE 6.0 Имеем код: Set fso = CreateObject('Scripting.FileSystemObject') Set f =...

2
2 / 1 / 1
Регистрация: 01.04.2019
Сообщений: 13
08.12.2020, 20:09  [ТС]
в общем, моя ошибка была в том, что в том приложении , что я запускаю через QProcess по факту ничего не выводится. я вывожу текст через
C++
1
qDebug() << "text";
а нужно через
C++
1
2
3
4
#include <iostream>
using namespace std;
 
cout << "text";
тогда всё будет работать.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
12.12.2020, 19:49
nikolaidor, У программ (процессов) есть 2 выходных потока. stdout - туда выводится обычными cout, printf, и stderr. Туды вводит qDedug. Вообще-то, это дело программы, куда выводить. Так, gcc в stdout выводит общую информацию, типа "Сейчас занимаюсь трансляцией такого-то исходника". А самое интересное для нас, об ошибках, выводит в stderr.
Обычно нам на это наплевать, так как и то и другое привязано к консоли. Но если пытаемся перехватить или перенаправить выводы, это уже становится важно.
А QProcess имеет методы для перехвата обоих потоков.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.12.2020, 19:49
Помогаю со студенческими работами здесь

QProcess::start() и QProcess::startDetached() - один работает, другой нет
Товарищи, появилась задача распаковать архив используя 7z, но столкнулся с проблемой при запуске процесса, QProcess::start() не запускает...

QProcess
Есть строка-путь, но не известно к чему этот путь- к exe, папки, ярлыку... Как узнать и запустить это объект. Под виндой есть...

Qt QProcess
Здравствуйте как можно запустить отладчик gdb.exe, чтобы потом можно было из своей формы Qt вводить команды в процесс gdb? можно ли это...

QProcess
Всем доброго времени суток! Есть у меня небольшая проблемка с QProcess. Значит, как этим пользоваться, в общих чертах, я уяснил. ...

QProcess
Всем привет. При запуске процессов более 62 получаю вот такое предупреждение &quot;cannot have more than 62 enabled at one time&quot;....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru