0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 3
1

Вывод результата работы команды не в консоль, а в textEdit

24.04.2017, 16:29. Показов 3227. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Команда qDebug() << system("lspci -b") выводит результат в консоль.
Как сделать, чтобы эта команда выводила результат в элемент textEdit.

C++ (Qt)
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
27
28
29
30
31
32
33
34
35
36
37
#include <QProcess>
#include <QDebug>
#include <QTextEdit>
#include <QPushButton>
#include <QString>
 
void MainWindow::on_devButton_clicked()
{
     QProcess* m_process;
     QTextEdit* m_display;
 
    //system("lspci -v | tee -a /home/SYSINFO/logfile.txt"); //Подробная инф-ция
    //system("lspci -k | tee -a /home/SYSINFO/logfile.txt"); //Краткая инф-ция
    //system("lspci -b | tee -a /home/SYSINFO/logfile.txt"); //Список устройств
 
    // Output to display
    ui->textEdit->clear();
    ui->textEdit->insertPlainText("Информация об интерфейсах и контроллерах компьютера: \n");
 
    // Output to console
    //qDebug() << system("lspci -b");
 
    QPushButton* devButton = new QPushButton("Информация об интерфейсах и контроллерах компьютера");
    QObject::connect(devButton, SIGNAL(clicked()), this, SLOT(devClicked()));
 
    file2.write("Информация об интерфейсах и контроллерах компьютера:\n");
    file2.write(ui->textEdit->toPlainText().toUtf8());
    file2.close();
}
 
void MainWindow::devClicked()
{
    QString str;
    m_process->start("lspci -v");
    str = m_process->readAllStandardOutput();
    m_display->insertPlainText(str);
}
не работает.
Может быть вы подскажите, в чем дело.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2017, 16:29
Ответы с готовыми решениями:

Вывод результата работы метода на консоль
Здравствуйте! Есть интерфейс с методом say. public interface Metod { public void say();...

Вывод результата команды в texbox
Здравствуйте, не могу понять как вывести результата выполнение команды shell в textbox dim z...

Вывод результата программы на консоль
Скажите пожалуйста как можно прописать функцию Main, чтобы вывести результат программы на консоль?...

Вывод результата выполнения команды в два файла
Всем привет, подскажите пожалуйста как результат направить в 2 файла В первый запись шла &gt;...

8
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
24.04.2017, 19:02 2
Вы объявляете m_display, а где вы выделяете под него память? Где отображаете его?
ui->textEdit и m_display - разные объекты
36 строка
C++ (Qt)
1
ui->textEdit->insertPlainText(str);
0
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
24.04.2017, 19:06 3
system() ничего не возвращает. Или выводи в файл, или используй QProcess и readAllStandardOutput().
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
24.04.2017, 19:10 4
Цитата Сообщение от nmcf Посмотреть сообщение
system() ничего не возвращает. Или выводи в файл, или используй QProcess и readAllStandardOutput().
Как это систем ничего не возвращает? Результат работы возвращает
И у него(нее) в слоте и используется процесс и считывание стандартного вывода
ТС сам(а) всех путает
0
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
24.04.2017, 22:49 5
Я имел в виду, что текст не возвращает.
0
0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 3
25.04.2017, 10:05  [ТС] 6
ничего.
Никакого результата - пустой экран, при этом никаких сообщений о ошибках.

Добавлено через 5 минут
Я знаю как выводить рез-т работы команды "lspci -v" в файл и в консоль (это я сделала), мне нужно вывести результат этой команды в поле textEdit на форме.
Я это делаю в функции devClicked() через слот
connect(devButton, SIGNAL(clicked()), this, SLOT(devClicked()));
0
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
25.04.2017, 10:35 7

Не по теме:

ANNA_KUZ, system(char *) из stdlib.h дёргает процесс консоли (cmd, bash, shell или кто у вас там завёлся) и выполняет в ней все строки. При этом в неё могут передаваться стандартные потоки текущего процесса, а могут и не передаваться, текущий процесс может считаться предком, а может не считаться, может продолжать выполнение, а может уйти в блекаут или завершиться. На реализацию system никаких ограничений в этом плане не наложено.

Иными словами, через system не заработает, QProcess вам в руки.

Добавлено через 2 минуты
Для большего понимания, перенаправьте вывод отладки в виджет и посмотрите, захватит ли он вывод system. Обычно не захватывает.



C++ (Qt)
1
2
3
4
5
    m_process->start("lspci -v");
    m_process->waitForBytesWritten(100000);
    m_process->waitForFinished(100000);
    str = m_process->readAllStandardOutput();
    m_display->insertPlainText(str);
0
0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 3
25.04.2017, 12:15  [ТС] 8
Я через Process и пытаюсь сделать, но до сих пор ничего не получилось.
0
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
25.04.2017, 12:34 9
Код ошибки проверьте, lspci может быть не внешним приложением, а внутренней командой консоли. Или ещё какие препоны могут быть, от путей до прав.
0
25.04.2017, 12:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2017, 12:34
Помогаю со студенческими работами здесь

Вывод только последней строки результата команды
Добрый день Мне необходимо вывести только последнюю строку при выполнении команды, подскажите...

Вывод даты и результата выполнения команды pathping в файл
Добрый день! Нужен батник, который выводит в файл дату/время плюс результат выполнения команды...

Вывод в правильной кодировке в файл результата выполнения команды
понимаю что как и почему. из консоли получаем текстовик в кодировке OEM 866. а нужна windows 1251...

Многопоточный поиск в массиве и вывод результата в консоль и файл
Всем привет. С наступающим праздником. Начинаю потихоньку осваивать многопоточность. Придумал...

подсчитать количество нечетных значений элементов массива и вывод результата на консоль СИ
подсчитать количество нечетных значений элементов массива и вывод результата на консоль на языке СИ...

Как отфильтровать вывод результата выполнения команды ipconfig, чтобы получить только IP-адрес?
Доброго времени суток, не подскажите, какой фильтр нужно использовались, чтобы отобразить только IP...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru