Qt - Visual studio 연동 및 연습(1)
Qt 설치시
start Menu shorcuts -> 시작메뉴이름설정
Qt로 지정
구글비밀번호
dhkddkwjd2!!
비쥬얼스튜디오에서 새프로젝트 생성하려 했는데 C++이 없음
해결 visual studio installer 에서
C++를 사용한 데스크톱 개발 체크 후 수정 (설치)
visuaal studio installer C++ 설치
라고 검색하면 나옴
프로젝트 만들기
Qt Widgets Application
새프로젝트 생성시
Qt GUI Application Wizard 창 생성
Base class 에서 모듈선택
QMainWindow - 일반적인 메인 어플리케이션 생성시 사용
어플리케이션의 사용자 인터페이스를 만들기 위한 프레임워크를 제공합니다.
또한, QToolBars, QDockWidgets, QMenuBar 그리고 QStatusBar를 추가 가능
QWidget
모든 GUI 요소에 대한 기본 클래스(base class)
QDialog와 같은 다른 위젯에 button을 추가하는 것과 같은 형태를 의미
- 메인 어플리케이면 QMaimWindow 사용
일반적대화상자 Diaglog 사용
파일명이 xxx.ui 파일 더블클릭 하면 Qt 디자이너실행
UI배치 적용 후 변수이름,텍스트,크기: 속성 편집기에서 설정 가능
저장 후 visual stuidio 로 복귀
Qt 경로
C:\Users\user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Qt\5.14.2
Qt 개념 이벤트(signal)와 함수(Slot)
버튼이 클릭됬다는 이벤트(signal)이 발생하면 연결된함수(slot)이 실행되는 방식
버튼누르면 팝업메시지 helloword 뜨는 예제
헤더파일
1. #include <QMessageBox> 정의
2. slot()함수 정의
public slots:
void ButtonClicked();
소스파일
1.connect함수를 사용하여 버튼 이벤트 연결"
connect(ui.pushButton1, SIGNAL(clicked()), this, SLOT(ButtonClicked()));//버튼이벤트 연결
2."버튼이벤트 실행될 함수 정의 "
void QtWidgetsApplication0809::ButtonClicked()
QMessageBox::information(this, "Title", "Helloworld");
//버튼이벤트 실행될 함수 정의 헤더파일에 QMessageBox정의
버튼 클릭하여 이미지파일 선택하고 선택된 이미지를 laveldp 그리는 예제
헤더파일
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication0809.h"
#include <qfiledialog.h>
class QtWidgetsApplication0809 : public QMainWindow
{
Q_OBJECT
public:
QtWidgetsApplication0809(QWidget *parent = nullptr);
//~QtWidgetsApplication0809();
private:
Ui::QtWidgetsApplication0809Class ui;
public slots:
void ButtonClicked();
};
소스파일
#include "QtWidgetsApplication0809.h"
QtWidgetsApplication0809::QtWidgetsApplication0809(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pushButton_LoadImage, SIGNAL(clicked()), this, SLOT(ButtonClicked()));//버튼이벤트 연결
}
void QtWidgetsApplication0809::ButtonClicked()
{
QFileDialog dlg;
QString filePath = dlg.getOpenFileName(this, "Load Image", "", "Image Files (*.png *.jpg *.bmp)");
QString fileName = filePath.section("/",-1); //파일이름 추출 위한 section함수
ui.label_FileName->setText(fileName);
QPixmap img; //
img.load(filePath);
int w = img.width();
ui.label_Width->setText(QString::number(w));
int h = img.height();
ui.label_Height->setText(QString::number(h));
ui.label_Display->setPixmap(img); //setPixmap함수: QPixmap이미지 정보를 QLabel에 설정
ui.label_Display->setScaledContents(true); //QLabel의 사용가능한 모든 공간 채움 ->설정된 pixmap크기조정됨
}