단축키로 파일 오픈하기
- 단축키 구현
- 결과
단축키 구현
Qt4에서 단축키 관련 메서드를 이용하여 특정 문서를 오픈할 수 있는 방법은 많습니다. 저는 오늘 그 중에서 두 가지 방법을 보여드리려 합니다. 첫 번째 방법은 단축키를 누르면 문서 파일이 직접적으로 오픈되는 방법입니다. 두 번째 방법은 단축키 클릭 시, 파일 브라우저를 오픈하는 방법입니다. 아래는 코드입니다.
#include <QDesktopServices>
#include <QUrl>
#include <QShortcut>
#include <QMessageBox>
#include <QFileDialog>
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// F1 핫키 설정.
QShortcut *shortcut = new QShortcut(QKeySequence(Qt::Key_F1), this);
connect(shortcut, SIGNAL(activated()), this, SLOT(showHelp()));
// F2 핫키 설정.
QShortcut *shortcut2 = new QShortcut(QKeySequence(Qt::Key_F2), this);
connect(shortcut2, SIGNAL(activated()), this, SLOT(showHelp2()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::showHelp()
{
// 메시지 박스 출력.
QMessageBox::StandardButton qMsgBox;
qMsgBox = QMessageBox::question(this, "Open File", "Do you want to open file?", QMessageBox::Yes | QMessageBox::No);
// Yes를 클릭하는 경우.
if (qMsgBox == QMessageBox::Yes) {
// 현재 프로젝트 경로를 path로 지정.
QString currentDir = QCoreApplication::applicationDirPath();
QString filePath = currentDir + "/tip.txt";
// 파일의 경로가 비어있는 경우.
if (!filePath.isEmpty()) {
QDesktopServices::openUrl(QUrl("file:///" + filePath, QUrl::TolerantMode));
} else {
QMessageBox::information(this, "Error", "File path is empty!");
}
}
}
void MainWindow::showHelp2()
{
// 메시지 박스 출력.
QMessageBox::StandardButton qMsgBox;
qMsgBox = QMessageBox::question(this, "Open File", "Do you want to open file?", QMessageBox::Yes | QMessageBox::No);
// Yes를 클릭하는 경우.
if (qMsgBox == QMessageBox::Yes) {
// 파일 브라우저 열기 및 파일 브라우저 창 Windows 타이틀 설정, 표시 가능한 파일 항목 설정.
QFileDialog::getOpenFileName(this, "Open File", QDir::homePath(), "Text Files (*.txt);;All Files (*)");
}
}
1. MainWindow의 생성자에서 ShortCut(단축키)를 선언해주었습니다. 이후, QT에서 이벤트를 처리하는 대표적인 방식인 SIGNAL-SLOT을 사용하여 이벤트의 처리를 해주었습니다. 단축키는 각각 F1과 F2로 설정해주었습니다. 이제 F1을 클릭하면 showHelp() 함수가, F2를 클릭하면 showHelp2() 함수가 동작합니다.
2. showHelp() 함수에서는 앞서 말씀드린 첫 번째 방법인 직접 문서 파일을 오픈하는 방법에 대한 구현입니다. 먼저 QMessageBox를 표시하여 Yes 버튼을 클릭하는 경우 파일이 열리도록 구현하였습니다. 문서 파일을 현재 프로젝트 경로에 넣어놓았기 때문에 현재 경로 + 문서 이름으로 path를 구성하였고 openUrl() 메서드를 이용하여 해당 경로의 파일을 오픈하도록 구현하였습니다.
3. showHelp2() 함수는 앞서 말씀드린 두 번째 방법인 파일 브라우저를 오픈하는 방법에 대한 구현입니다. 마찬가지로 메시지 박스를 출력하고 Yes를 클릭하면 getOpenFileName() 메서드를 통해 파일 브라우저를 오픈할 수 있게 했습니다. 인자로 파일 브라우저의 Window 타이틀, 파일 브라우저 오픈 시의 최초 경로, 표시할 파일의 확장자를 설정할 수 있습니다.
결과
아래 MainWindow에서 단축키를 클릭하면 구현된 slot 함수가 호출됩니다.
F1와 F2 단축키를 클릭했을 경우입니다. 메시지 박스가 표시됩니다.
F1을 클릭하고 위 메시지 박스에서 확인을 클릭하는 경우 파일이 직접적으로 오픈됩니다.
F2의 경우 아래와 같이 파일 브라우저가 오픈되고 설정한 파일의 확장자만 목록에 표시됩니다.
'Programming > QT' 카테고리의 다른 글
[QT] Qt4 - 기본 웹 브라우저로 설정한 URL 열기 (0) | 2024.01.18 |
---|---|
[QT] Qt4 - List 데이터에서 특정 단어의 빈도수 산출하기 (0) | 2024.01.18 |
[QT] Qt4 - QStringList & for문 활용해서 json데이터 값 추출하기 (0) | 2024.01.18 |
[QT] Qt4 - Naver 검색 API 사용해서 데이터 파싱하기 (0) | 2024.01.16 |
[QT] Qt4 - network 모듈 추가 (0) | 2024.01.15 |