Skip to content

Instantly share code, notes, and snippets.

@gjorquera
Last active February 4, 2024 12:44
Show Gist options
  • Save gjorquera/2576569 to your computer and use it in GitHub Desktop.
Save gjorquera/2576569 to your computer and use it in GitHub Desktop.
Qt way to read from stdin.
#include <iostream>
#include "console.hpp"
void Console::run()
{
std::cout << "First message" << std::endl;
std::cout << "> " << std::flush;
connect(m_notifier, SIGNAL(activated(int)), this, SLOT(readCommand()));
}
void Console::readCommand()
{
std::string line;
std::getline(std::cin, line);
if (std::cin.eof() || line == "quit") {
std::cout << "Good bye!" << std::endl;
emit quit();
} else {
std::cout << "Echo: " << line << std::endl;
std::cout << "> " << std::flush;
}
}
#pragma once
#include <QObject>
#include <QSocketNotifier>
#include <iostream>
class Console : public QObject
{
Q_OBJECT;
public:
Console();
void run();
signals:
void quit();
private:
QSocketNotifier *m_notifier;
private slots:
void readCommand();
};
inline Console::Console()
{
m_notifier = new QSocketNotifier(fileno(stdin), QSocketNotifier::Read, this);
}
#include "console.hpp"
#include <QCoreApplication>
int main(int argc, char** argv)
{
QCoreApplication app(argc, argv);
Console console;
console.run();
QObject::connect(&console, SIGNAL(quit()), &app, SLOT(quit()));
return app.exec();
}
@AndreiCherniaev
Copy link

There is another example

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment