한국어
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 85787
49 Qt 하이브리드 애플리케이션(Hybrid App) 개발 file makersweb 2023.02.08 836
48 Widgets(C++) 기반의 기본 스타일을 Dark 테마 및 Material 디자인 스타일로 바꾸기 file makersweb 2023.01.28 1102
47 Qt Property(속성) 시스템 makersweb 2023.01.08 1699
46 VTK 를 사용해서 강력한 시각화(3D, Plotting, Chart)Qt 응용프로그램 개발하기 file makersweb 2022.10.16 1565
45 QProcess 보안 권고 리뷰 file makersweb 2022.09.18 575
44 clazy 로 13개의 시그널, 슬롯 오류 해결 makersweb 2022.08.23 563
43 단일 인스턴스 Qt 응용 프로그램(Single-instance Application) makersweb 2022.06.23 700
42 VirtualKeyboard 스타일 커스터 마이징 makersweb 2022.03.13 462
41 Qt 응용프로그램에서 PDF 문서 렌더링 file makersweb 2021.09.23 676
40 Qt 를 사용하거나 기반으로 하는 응용프로그램 file makersweb 2021.01.30 3782
39 UI 폼(Form)작성 시 탭 순서(Tab Order) 설정 file makersweb 2020.08.24 2766
38 Qt기반의 서버와 클라이언트간 SOAP(Simple Object Access Protocol) file makersweb 2020.05.11 969
» 콘솔에서 사용자 입력받기 file makersweb 2020.03.22 51841
36 QOpenGLWidget 을 투명하게 적용 file makersweb 2020.02.05 1028
35 2020년에 변경되는 Qt 오퍼 (Qt offering changes 2020) [2] j2doll 2020.01.31 719
34 Qt 멀티 스레드 프로그래밍 시 유의해야 할 몇 가지 makersweb 2020.01.13 4859
33 Qt의 오픈소스 라이센스 소개 file makersweb 2019.12.15 12539
32 Qt Marketplace 발표 makersweb 2019.12.02 617
31 QOpenVirtualkeyboard(Qt 5용 한글 및 영문, 숫자 가상키보드) file makersweb 2019.11.27 2240
30 많은 리소스를 사용하는 Qt프로젝트에서 고려해봐야 할 qmake 옵션 makersweb 2019.10.11 1236