한국어
Qt
 

사용자로부터 콘솔창을 통해 입력받기 위한 예제소스코드이다.

#ifdef Q_OS_WIN
#include <QWinEventNotifier>
#include <windows.h>
#else
#include <QSocketNotifier>
#endif

#include <iostream>

class Console : public QObject
{
    Q_OBJECT
public:
    Console(QObject *parent = nullptr):QObject(parent){}

    void run()
    {
        std::cout << "Please input command." << std::endl;
        std::cout << "> " << std::flush;

#ifdef Q_OS_WIN
        m_notifier = new QWinEventNotifier(GetStdHandle(STD_INPUT_HANDLE));
        connect(m_notifier, &QWinEventNotifier::activated, [&](HANDLE) {
#else
        m_notifier = new QSocketNotifier(fileno(stdin), QSocketNotifier::Read, this);
        connect(m_notifier, &QSocketNotifier::activated, [&](int) {
#endif
            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;
            }
        });
    }

private slots:

signals:
    void quit();

private:
#ifdef Q_OS_WIN
    QWinEventNotifier *m_notifier;
#else
    QSocketNotifier *m_notifier;
#endif
};

 

main.cpp

#include <QCoreApplication>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Console console;
    console.run();

    // quit 시그널을 수신하면 종료
    QObject::connect(&console, SIGNAL(quit()), &a, SLOT(quit()));

    return a.exec();
}

 

결과:
input_qt_app.png
번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 86234
19 Qt의 스레드간 시그널 슬롯의 커넥션타입 [1] makersweb 2015.10.24 10226
18 Ubuntu Linux에서 Qt Creator 설치 file makersweb 2016.03.06 10683
17 Qt 응용프로그램 배포(windows) file makersweb 2018.10.10 11398
16 Qt Installer Framework - 패키징, 설치프로그램 제작 file makersweb 2018.10.14 11704
15 QtSerialPort를 사용한 시리얼(Serial)통신 [3] makersweb 2019.05.21 11986
14 Qml 기본 컴포넌트 강좌 (1) file makersweb 2019.01.03 12129
13 Qt의 오픈소스 라이센스 소개 file makersweb 2019.12.15 12640
12 Windows에서 라즈베리파이3용 Qt5.10.0 크로스컴파일 [20] file makersweb 2018.02.23 13062
11 QML과 QtQuick 모듈 개념과 기본 타입들 makersweb 2019.04.26 13443
10 Qml과 C++로 구현하는 GUI어플리케이션 file makersweb 2018.12.25 14031
9 Qt 프로그래밍의 시작 makersweb 2015.10.25 14416
8 초보자를 위한 첫번째 프로젝트 - QML로 만드는 Hello World file makersweb 2018.03.16 14527
7 QtCreator Design으로 GUI만들기 (QML로 만드는 Hello World -2) [1] file makersweb 2019.05.26 14989
6 QThread 소개 및 예제 makersweb 2019.12.25 19623
5 Qt의 시그널 슬롯 시스템 file makersweb 2015.10.20 23691
4 Windows에서 Qt 설치 따라하기 file makersweb 2019.10.14 30939
3 QString 문자열 다루기 예제 운영자 2019.01.26 40396
» 콘솔에서 사용자 입력받기 file makersweb 2020.03.22 51864
1 가상키보드(Qt Virtual Keyboard)를 사용하는 방법 [32] file makersweb 2019.05.03 221977