Сигнал QSocketNotifier не срабатывает - PullRequest
0 голосов
/ 07 ноября 2019

Мне не удалось заставить QSocketNotifier работать с дескриптором файла, активированный сигнал не сработал бы, даже если вход был доступен. Я попытался написать минимальный пример с STDIN_FILENO, но он все еще не срабатывал.

Заголовочный файл:

#include <QMainWindow>
#include <QSocketNotifier>

#include <unistd.h>
#include <iostream>

QT_BEGIN_NAMESPACE
namespace Ui { class mainWindow; }
QT_END_NAMESPACE

class mainWindow : public QMainWindow{
    Q_OBJECT

public:
    mainWindow(QWidget *parent = nullptr);
    ~mainWindow();

private:
    Ui::mainWindow *ui;

    QSocketNotifier nt;

private slots:
    void inputAvailable(int fd);
};
#endif // MAINWINDOW_H

cpp файл:

#include "mainwindow.h"
#include "ui_mainwindow.h"

mainWindow::mainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::mainWindow),
nt(STDIN_FILENO, QSocketNotifier::Read, this){
    ui->setupUi(this);

    connect(&nt, SIGNAL(activated(int)), this, SLOT(inputAvailable(int)));
    nt.setEnabled(true);
    std::cout << nt.isEnabled() << std::endl;
}

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

void mainWindow::inputAvailable(int fd){
    Q_UNUSED(fd)

    std::cin.ignore(LONG_MAX);
    std::cin.clear();
    std::cout << "input" << std::endl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...