인프런 커뮤니티 질문&답변
클래스 이벤트 함수 사용법 문의
작성
·
434
1
강사님 Model/View 예제 이용해 사용방법 익히기 까지 수강하였습니다. 해당 강의에 올려주신 예제에서 우측의 TreeView에서 파일을 클릭(더블클릭)하면 파일명과 경로등을 일단 단순위 qDegug()룰 통해 출력할려고 합니다. 이때 connect 를 통해 slot함수와 이벤트 함수를 연결하려고 하는데. 트리뷰에서 파일을 더블클릭했을때의 멤버변수를 알아야 하는데 관련 클래스에서 어떠어떠한 이벤트 멥버함수가 있는지 어떻게 알 수 있을까요? 막상 하려니 막히네요 ^^ 제 생각에는 일단 connect를 통해 해당 아이템 더블클릭 이벤트를 발생시키고 이때 선택된 아이템의 파일명을 String으로 가져와 출력해주면 될것 같은데요... 도움부탁드립니다.
퀴즈
Qt에서 Signal과 Slot의 주요 목적은 무엇일까요?
프로그램 실행 속도 최적화
객체 간 이벤트 기반 통신 구현
UI 디자인 자동 생성 기능
데이터베이스 연결 관리
답변 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()
{
}







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