Kiberchief
@Kiberchief
Пока учусь.

Почему поле lineEdit не реагирует на enter?

Здравствуйте!
Хочу создать командную строку в qt с помощью класса QProcess, но у меня возникла проблема поле lineEdit вообще не реагирует на нажатие enter, помогите пожалуйста разобраться в чем может быть проблема.

#include "secondwindow.h"
#include "ui_secondwindow.h"
#include <QNetworkInterface>
#include <QDebug>
#include <QHostInfo>
#include <QObject>
#include <QTextCodec>
#include <QtNetwork>
#include <QProcess>

SecondWindow::SecondWindow(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::SecondWindow)
{
    ui->setupUi(this);

    m_process = new QProcess(this);
        connect(m_process, SIGNAL(readyReadStandardOutput()), this, SLOT(setStdout()) );
        connect(ui->lineEdit_4, SIGNAL(returnPressed()), this, SLOT(command()) );
}

SecondWindow::~SecondWindow()
{
    delete ui;
}
void SecondWindow::setStdout()
{
    if(QSysInfo::productType()=="windows")
    {
        QTextCodec *codec = QTextCodec::codecForName("IBM 866");
        ui->textEdit->append( codec->toUnicode(m_process->readAllStandardOutput() ) );
    }
    else
        ui->textEdit->append( m_process->readAllStandardOutput() );
}
void SecondWindow::command()
{
    QString strCommand;
    if(QSysInfo::productType()=="windows")
        strCommand = "cmd /C ";
    strCommand += ui->lineEdit_4->text();
    m_process->start(strCommand);
}
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
Kiberchief
@Kiberchief Автор вопроса
Пока учусь.
SecondWindow::SecondWindow(QWidget* parent)
: QDialog(parent)
, ui(new Ui::SecondWindow)
{
ui->setupUi(this);

m_process = new QProcess(this);
connect(m_process, &QProcess::readyReadStandardOutput, this, &SecondWindow::setStdout);
connect(ui->lineEdit_4, SIGNAL(returnPressed()), this, SLOT(command()));
}

SecondWindow::~SecondWindow() { delete ui; }

void SecondWindow::setStdout()
{
if (QSysInfo::productType() == "windows") {
QTextCodec* codec = QTextCodec::codecForName("IBM 866");
ui->textEdit->append(codec->toUnicode(m_process->readAllStandardOutput()));
}
else
ui->textEdit->append(m_process->readAllStandardOutput());

ui->lineEdit_4->clear();
}
void SecondWindow::command()
{
QString strCommand;
if (QSysInfo::productType() == "windows")
strCommand = "cmd ";
QStringList arguments;
arguments << "/C" << ui->lineEdit_4->text();
m_process->start(strCommand, arguments);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы