한국어
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 87713
119 안드로이드 가상장치 사용 file makersweb 2019.01.13 1184
118 QMake 프로젝트를 CMake 프로젝트로 변환 with qmake2cmake makersweb 2022.09.17 1191
117 Qml에서 커튼효과 구현 예제 - Shader Effects file 운영자 2018.12.05 1213
116 QProcess 예제 (프로그램 재시작) file makersweb 2023.01.25 1238
115 Qt 6의 비동기 API makersweb 2020.10.19 1316
114 많은 리소스를 사용하는 Qt프로젝트에서 고려해봐야 할 qmake 옵션 makersweb 2019.10.11 1319
113 Qt 하이브리드 애플리케이션(Hybrid App) 개발 file makersweb 2023.02.08 1327
112 재진입(Reentrancy) 및 스레드 안전성(Thread-Safety) makersweb 2020.04.19 1353
111 Qt 스마트 포인터 (QSharedPointer, QScopedPointer, QPointer) makersweb 2022.08.18 1367
110 웹기반 Qt Design Viewer [2] file makersweb 2019.10.23 1397
109 tslib의 ts_calibrate를 응용해서 Qt로 터치보정기능 구현 file makersweb 2019.04.06 1464
108 qInstallMessageHandler를 이용한 디버그 메세지 출력 제어하기 makersweb 2019.02.25 1474
107 QThread 및 QMutex 예제 makersweb 2021.01.12 1481
106 Qbs에 대한 소개와 설치하는 방법 makersweb 2019.10.09 1488
105 싱글터치 스크린 및 임베디드 리눅스 기반에서 Qt 터치입력 makersweb 2018.12.24 1515
104 QML과 JavaScript 의 숫자 관련 내장된 함수 makersweb 2021.03.28 1561
103 Qt Quick 3D 소개 makersweb 2019.11.09 1583
102 QML에서 undefined를 확인하는 방법 makersweb 2017.11.29 1607
101 ApplicationWindow 와 메뉴바(MenuBar)구성 file makersweb 2020.01.04 1619
100 Widgets(C++) 기반의 기본 스타일을 Dark 테마 및 Material 디자인 스타일로 바꾸기 file makersweb 2023.01.28 1632