Моей программе Qt нужно отправить командную строку с QProcess
и получить результат, который затем будет сохранен в QString
.
Вот мой код:
mainwindow.h
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
QProcess p;
void sendCommand(QString command);
private slot:
void fetchResult();
// ...
}
mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
connect(&p, SIGNAL(readyReadStandardOutput()), this, SLOT(fetchResult()));
// ...
}
void MainWindow::fetchResult()
{
QString result = p.readAllStandardOutput();
// ...
}
void MainWindow::sendCommand(QString command)
{
p.start(command);
p.waitForFinished();
}
// ...
Затем я отправляю такие команды: sendCommand("cat " + filename);
(например) и ожидаю получить результат в переменной result
, расположенной в fetchResult()
.
Все работает как обаяние, но ... если результат слишком велик (~ 700 символов), его мучают. Странная вещь: переменная содержит конец ожидаемой строки.
Где я что-то пропускаю.