inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[입문] Qt 6 프로그래밍 1편

Signal 과 Slot을 연결하는 예제 구현

클래스 이벤트 함수 사용법 문의

448

김재우

작성한 질문수 10

1

강사님 Model/View 예제 이용해 사용방법 익히기 까지 수강하였습니다. 해당 강의에 올려주신 예제에서 우측의 TreeView에서 파일을 클릭(더블클릭)하면 파일명과 경로등을 일단 단순위 qDegug()룰 통해 출력할려고 합니다. 이때 connect 를 통해 slot함수와 이벤트 함수를 연결하려고 하는데. 트리뷰에서 파일을 더블클릭했을때의 멤버변수를 알아야 하는데 관련 클래스에서 어떠어떠한 이벤트 멥버함수가 있는지 어떻게 알 수 있을까요? 막상 하려니 막히네요 ^^ 제 생각에는 일단 connect를 통해 해당 아이템 더블클릭 이벤트를 발생시키고 이때 선택된 아이템의 파일명을 String으로 가져와 출력해주면 될것 같은데요... 도움부탁드립니다.

 

GUI qt

답변 1

0

김대진

안녕하세요. 김재우님 , 

QTreeView 에는 " doubleClicked(const QModelIndex &index) " 라는 Signal 이 있습니다. 이 시그널을 Slot 함수와 연결해주면, 클릭한 해당 디렉토리 또는 파일에 대한 정보를 얻어 올 수 있습니다. 

예를 들어 아래와 같이 사용할 수 있습니다.  

 

Widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QtWidgets>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();

private:
    QFileSystemModel *m_model;

private slots:
    void on_treeView_doubleClicked(const QModelIndex& index);
};

#endif // WIDGET_H

 

Widget.cpp 

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    setWindowTitle("Model/View - QTreeView and QListView");

    resize(600, 300);
    QSplitter *splitter = new QSplitter(this);

    // Model class
    m_model = new QFileSystemModel;
    m_model->setRootPath(QDir::currentPath());

    // View widget - QTreeView
    QTreeView *tree = new QTreeView(splitter);
    tree->setModel(m_model);
    tree->setRootIndex(m_model->index(QDir::currentPath()));

    QVBoxLayout *layout = new QVBoxLayout();
    layout->addWidget(tree);
    setLayout(layout);

    connect(tree, SIGNAL(doubleClicked(QModelIndex)),
            this, SLOT(on_treeView_doubleClicked(QModelIndex)));
}

void Widget::on_treeView_doubleClicked(const QModelIndex& index)
{
    qDebug() << m_model->filePath(index);
}

Widget::~Widget()
{

}

0

김재우

감사합니다. 

제가 해당함수를 찾아보려고 해도 찾을 수가 없었습니다. QTreeView F1을 눌러 도움말을 열었지만 찾을 수 없었어요.. 어디서 볼 수 있을까요?

0

김대진

Assistant 툴에서 보시면 찾을 수 있습니다. QTreeView 는 QAbstractItemView 클래스로부터 상속받는데, 이 클래스에 보면 확인 하실 수 있습니다. 

 

아래 그림에서 보는 것과 같이 빨간색으로 테두리 되어있는 링크를 클릭하시면 됩니다.

Assistant 가 Qt 버전마다 조금씩 형식이 다룰 수 있습니다. 따라서 inherited members 와 관련된 링크를 클릭하시면 됩니다. 

 

 

0

김재우

친절하고 빠른 설명 감사드립니다. 열심히 공부하겠습니다. 

Build system의 Obs 에 관한 질문

1

40

2

강의 재수강 문의

1

63

2

강의 연장 문의

1

84

2

강의 연장 질문

1

66

2

코드 크가가 너무 작은대 이거 화면확대 어떻게 하나요?

0

185

4

Qt6 우분투에서 컴파일 안됨.

1

196

2

Qt5 라이센스 질문(상업적용도)

1

2076

2

Qt creator 환경문제

1

856

2

프로젝트 생성시 kits selection에서 워닝마크

1

273

1

Container Class 관련 질문

1

263

1

하드코딩으로 위젯 구현할 때, 소멸자도 구현해야되나요?

1

435

1

QMainWindow setStatusTip이 적용되지 않습니다

1

321

1

section3 signal-slot 함수부분 이해안됨

1

287

1

윈도우에서 큐티 프로그램 설치 문제

1

697

1

라이선스 관련 문의

1

375

1

QT로 Html이나 PDF 리포트 만드는 방법 문의 드립니다.

2

2166

2

다중선택한 checkbox의 동작을 순차적으로 실행하는 방법 문의

1

321

1

visual stduio ide 환경에서 코드 작성 및 실행 방법

1

425

1

Qt 혹은 QML maps 문의

2

625

1

예제 실습 오타 제보합니다

1

387

1

No documentation available. 이 뜹니다.

1

338

1

리눅스 온라인 인스톨러에서의 설치 항목이 강의 슬라이드와 다릅니다.

1

735

2

Qt Creator 메뉴에 중국어

1

1036

1

qt6 궁금

1

727

1