
QTableWidget 클래스는 편리하게 표를 표현할 수 있는 위젯 클래스로 개별 항목은 QTableWidgetItem 클래스로 제공된다. QWidget> QFrame> QAbstractScrollArea> QTableView의 계층 구조로 상속받는다. 나름의 데이터 모델이 있다면 상위 클래스인 QTableView 클래스를 사용하는 것이 적절하다. 클래스 상속 계층 구조에서도 나름 유추할 수 있듯이 표의 내용이 위젯의 크기를 벗어나면 자동적으로 스크롤바를 표시한다. 참조 링크 : https://doc.qt.io/qt-5/qtablewidget.html https://doc.qt.io/qt-5/qtablewidgetitem.html tableWidget = new QTableWidget(this); tab..

QTextEdit 클래스는 단순 텍스트뿐만 아니라 HTML4를 지원하는 하이퍼텍스트까지 지원하는 뷰어 역할과 편집기 역할을 모두 할 수 있는 도구이다. 위의 그림에서 볼 수 있듯이 HTML 문법을 자유롭게 활용할 수 있고 이미지와 테이블 등을 표시할 수 있으며 내용이 커지면 자동으로 스크롤바로 컨트롤할 수 있도록 해준다. QSyntaxHighlighter를 사용하면 개발자가 원하는 방식으로 편집기를 폭넓게 활용할 수 있다.("QSyntaxHighlighter 클래스(QT C++)" 참조) QWidget < QFrame < QAbstractScrollArea 클래스를 상속한다. 참조 링크 : https://doc.qt.io/qt-5/qtextedit.html ed_fld = new QTextEdit(thi..

C++11부터 표준 라이브러리를 정규식을 편리하게 사용할 수 있다. 정규식이 복잡한 듯 보여도 알아두면 이만큼 요긴한 것이 없다. #include #include #include #include int main() { std::string sample_str = "In the beginning God created the heavens and the earth." "Now the earth was formless and empty, darkness was over the surface of the deep, " "and the Spirit of God was hovering over the waters."; std::regex test_search("GOD", std::regex_constants::EC..

QAction 클래스는 메뉴, 툴바버튼, 단축키에 대한 처리를 일원화하는 도구로 QObject 클래스를 상속받는다. 많은 UI 관련 클래스들이 QWidget 클래스를 상속받고 QWidget에 addAction 메서드를 정의하고 있지만 해당 액션이 메뉴나 툴바 등에만 유효하므로 주의한다. 참조 링크 : https://doc.qt.io/qt-5/qaction.html ico_t.load(":/images/new.png"); QAction *actNew = new QAction(QPixmap::fromImage(ico_t),_("New"),this); actNew->setShortcut(Qt::CTRL+Qt::Key_N); actNew->setToolTip(_("New Project")); connect(ac..

메뉴 툴바에서 풀다운 방식의 메뉴를 구성하거나 독립적인 콘텍스트 메뉴를 구성할 때 사용한다. QWidget 클래스를 상속한다. 참조 링크 : https://doc.qt.io/qt-5/qmenu.html QMenu *mn_file = menuBar()->addMenu(_("&File")); mn_file->addAction(actNew); mn_file->addAction(actOpen); mn_recent = mn_file->addMenu(_("&Recent Projects")); for(auto i = 0; i addAction(recentFileActionList.at(i)); mn_file->addSeparator(); mn_fi..

QHBoxLayout, QVBoxLayout, QFormLayout, QStackedLayout과 함께 QT UI의 레이아웃을 잡아주는 대표적인 클래스이다. 레이아웃 클래스들은 창에 포함된 요소들이 고정 위치와 크기로 경직된 상태로 존재하는 것이 아니라 부모창의 크기에 따라 유연하게 배치되면서도 그 틀을 유지할 수 있도록 해준다. QGridLayout은 부모 레이아웃이나 부모 위젯으로부터 공간을 부여받으면 공간을 행열로 나누어 각 요소들이 특정 공간에 배치되도록 한다. 참조 링크 : https://doc.qt.io/qt-5/qgridlayout.html 위의 예제는 2개의 행과 5개의 열을 가진 레이아웃으로 2행의 리스트 위젯은 다섯 개의 열에 걸쳐서 자리하도록 설정되었다. 그리드 레이아웃 내에서는 크기..

한 줄 입력창을 지원하는 QT UI 클래스로 복사 및 붙여 넣기와 실행취소/다시 실행도 지원을 비롯한 다양한 기능을 지원한다. QWidget 클래스를 상속받는다, 참조 링크 : https://doc.qt.io/qt-5/qlineedit.html 위의 그림은 대표적인 사용 사례들로 연관 메서드들은 다음과 같다. QString placeholderText() void setPlaceholderText(const QString &) : 입력창에 무엇을 입력할지 표시하는 Place Holder 설정 및 조회 bool isReadOnly() void setReadOnly(bool) bool hasFrame() void setFrame(bool) : 읽기 전용/테두리 표시 여부 조회 및 설정 QLineEdit::E..

QT의 다양한 클래스를 사용하여 프로그램을 작성하다 보면 나름 잘 정리된 매뉴얼과 풍부한 예제 코드 덕분에 편리하게 코딩을 진행할 수 있는 것이 사실이다. 그런데, 다양한 대화창을 통해서 사용자와 소통해야 하는 상황이라면 단순한 날 코딩만으로 대화창을 구성하고 수정하는 것은 너무나 비효율적이다. QT에서 제공하는 QT 디자이너를 활용하는 것이 지혜롭다. 다만, QT 디자이너를 사용하여 대화창을 작성 및 관리하는 체계를 활용한다면 UI 디자인 코드와 개발자의 코드가 섞이지 않도록 하는 것이 좋다. QT 디자이너를 활용하여 대화창을 작성하는 과정을 정리하면 위의 그림과 같다. QT 디자이너를 사용하여 대화창을 작성하면 해당 디자인 내용은 *.ui 파일에 저장한다. 사용자 인터페이스 디자인 내용을 UIC(Us..