Qt5 to Qt6 проблемы
Есть такой простенький класс - обертка для QProcess:
namespace Ui {
class Proc;
}
class Proc : public QObject {
Q_OBJECT
public:
explicit Proc( QObject *parent=0 );
virtual ~Proc();
private:
QProcess *process;
public:
void startProcess (QString binaryPath);
void sendCommand (QString command);
private slots:
void readFromProcess();
void errorFound(QProcess::ProcessError err);
signals:
void messageRecieved(QString);
void processFault(QProcess::ProcessError);
void processStarted();
void processFinished(int exitCode, QProcess::ExitStatus exitStatus);
};
Proc::Proc(QObject* parent) : QObject (parent) {
process = new QProcess(this);
process->setReadChannel(QProcess::StandardOutput);
connect (process, SIGNAL(readyRead()), SLOT(readFromProcess()));
connect (process, SIGNAL(errorOccurred(QProcess::ProcessError)), this, SLOT(errorFound(QProcess::ProcessError)));
connect (process, SIGNAL(started()), SLOT(processStarted()));
connect (process, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(processFinished(int, QProcess::ExitStatus)));
}
void Proc::startProcess (QString binaryPath){
process->start(binaryPath);
}
void Proc::sendCommand (QString command){
process->write(command.toLatin1());
}
void Proc::readFromProcess(){
while (process->canReadLine()){
QString line = QString::fromLatin1(process->readLine());
emit messageRecieved(line);
}
}
void Proc::errorFound(QProcess::ProcessError err){
emit processFault(err);
}
void Proc::processStarted(){
qDebug()<<"started";
}
void Proc::processFinished(int exitCode, QProcess::ExitStatus status){
qDebug()<<"finished";
}
Proc::~Proc(){
}Запускаю процесс xinput и жду выхлопа:
xinput = new Proc();
connect(xinput, SIGNAL(messageRecieved(QString)), this, SLOT(xinputRecieved(QString)));
xinput->startProcess("xinput --test-xi2 --root");
xinputRecieved(QString msg){
qDebug()<<msg;
}Сегодня обновилась система и qt5 больше нету, только qt6. И с qt6 выхлоп xinput не приходит. Более того, xinput в списке процессов top вообще отсутствует. Хотя слот processStarted пишет, что процесс стартанул. Слот processFinished при этом молчит.
Что такого поменялось в qt6, что процесс xinput стал вести себя таким образом? Сам xinput будучи запущен вручную в консоли исправно работает.
