728x90

마우스 이벤트 처리를 해서 듀얼 모니터에서 왔다갔다하니까 좌표 계산이 이상해져서 창이 왔다갔다하는 현상이있었다.

 

그럴 때 그냥 Mouse Press Event 에서 아래와 같은 처리만 하면 되었다. (기록...)

 

const int WM_SYSCOMMAND = 0x0112;
const int SC_FORMMOVE = 0xf012;

if (Mouse Press Event && LeftButton)
{
	ReleaseCapture();
	SendMessage(hwnd, WM_SYSCOMMAND, SC_FORMMOVE, 0);
}
728x90

'GUI Toolkit > QT' 카테고리의 다른 글

QT - QWidget에서 DirectX Rendering  (0) 2019.11.20
QT - qDebug() 와 QT_NO_DEBUG_OUTPUT  (0) 2019.01.17
QT - InputMethodEvent() 버그...?  (3) 2019.01.15
QT - QT 설치하기.  (0) 2017.02.18
728x90

QWidget에 DirectX를 렌더링하니 뭔가가 계속 덮어져서 Rendering 한 영상이 지워지는 현상이 있었다.

 

그래서 인터넷 검색을 해보니 다른 API를 이용하여 QWidget에 그릴 때에는 paintEngine()을 오버라이딩 해줘야 한다.

QPaintEngine *paintEngine() const { return NULL;

 

https://stackoverflow.com/questions/34220730/qt-directx-rendering

 

Qt Directx rendering

I'm rendering in Qt widget by DirectX. I disabled qt paint engine QPaintEngine *paintEngine() const { return NULL; } but sometimes I want to enable qt paint and disable directX rendering. I'm

stackoverflow.com

 

 

728x90

'GUI Toolkit > QT' 카테고리의 다른 글

QT - Dragger  (0) 2023.06.22
QT - qDebug() 와 QT_NO_DEBUG_OUTPUT  (0) 2019.01.17
QT - InputMethodEvent() 버그...?  (3) 2019.01.15
QT - QT 설치하기.  (0) 2017.02.18
728x90

qDebug()는 MFC의 TRACE()나 ASSERT()처럼 Debug 모드에만 나오고 Release에는 안나오는 그런 define이 아니다.


기본적으로는 그냥 동작을 하고, 전처리기에 QT_NO_DEBUG_OUTPUT을 추가하면 동작하지 않는 그런 define이다.



나라면 DebugView를 이용하기 위해서라도 QT_NO_DEBUG_OUTPUT를 사용하지 않을 것 같다...




  • qDebug() is used for writing custom debug output.
  • qWarning() is used to report warnings and recoverable errors in your application.
  • qCritical() is used for writing critical error mesages and reporting system errors.
  • qFatal() is used for writing fatal error messages shortly before exiting.


728x90

'GUI Toolkit > QT' 카테고리의 다른 글

QT - Dragger  (0) 2023.06.22
QT - QWidget에서 DirectX Rendering  (0) 2019.11.20
QT - InputMethodEvent() 버그...?  (3) 2019.01.15
QT - QT 설치하기.  (0) 2017.02.18
728x90

QT에서 한글을 입력받게 만들어서 조합 하고 완성하기 위해서는 InputMethodEvent()를 사용해야 한다.


그런데 이 이벤트가 Debug에서는 발생하고, Release에서는 발생이 안되서 약 몇시간동안 삽질을 했었는데, 


결론은 QWidget::setAttribute(Qt::WA_InputMethodEnabled, true); 으로 InputMethodEvent를 사용하겠다고 명시적으로 설정해야된다.




한글 조합 및 완성

- InputMethodEvent()에서 QInputMethodEvent를 매개변수로 받는데, 이 매개변수의 preeditString()은 조합 중인 단어, commitString()은 조합이 완료된 단어이다. 이것을 잘 이용하면 실시간으로 한글이 작성되는 것을 볼 수 있다.



InputMethodEvent()가 발생하지 않는다면...

- 이 이벤트가 발생하지 않는 QWidget의 속성에서 사용하겠다고 알려주면 된다.

   QWidget::setAttribute(Qt::WA_InputMethodEnabled, true); 

728x90

'GUI Toolkit > QT' 카테고리의 다른 글

QT - Dragger  (0) 2023.06.22
QT - QWidget에서 DirectX Rendering  (0) 2019.11.20
QT - qDebug() 와 QT_NO_DEBUG_OUTPUT  (0) 2019.01.17
QT - QT 설치하기.  (0) 2017.02.18
728x90

QT의 기본 사이트 : https://www.qt.io/


QT의 다운로드 사이트 : https://www.qt.io/developers/


QT의 Add-in 다운로드 사이트 : http://download.qt.io/



우선 QT를 설치해야 한다.


QT를 다운받으려면 다운로드 사이트에서 다운 받고 설치하면 된다.


라이센스 관련된 선택을 해서 받도록 하자.




Visual Studio에서 Qt를 사용하려면 기본 코드는 되지만, Dialog와 같은 것들은 Build Error가 발생하기 때문에 사용할 수 없다.


QT에서는 Visual Studio Add-in을 제공하고 있으므로, 이것을 설치해야만 Visual Studio에서 모든 기능을 사용할 수 있다.


위의 Add-in 사이트에서 


Official_releases -> vsaddin -> qt-vs-addin-1.2.5.exe (최신 버전) 을 다운 받고 설치하면 된다.


설치가 성공적으로 끝나면


Visual Studio -> New Project -> Qt5 Project 를 만들 수 있다.





하지만, 지금 프로젝트를 생성하려고 하면 Error가 발생할 것이다.


왜냐하면, QT Add-in에서 QT의 버전을 설정해주지 않았기 때문이다.


Visual Studio의 QT 탭에서 버전을 선택해주자.





여기까지 잘 설치했다면 QT 프로그래밍을 할 준비는 완료 되었다.

728x90

'GUI Toolkit > QT' 카테고리의 다른 글

QT - Dragger  (0) 2023.06.22
QT - QWidget에서 DirectX Rendering  (0) 2019.11.20
QT - qDebug() 와 QT_NO_DEBUG_OUTPUT  (0) 2019.01.17
QT - InputMethodEvent() 버그...?  (3) 2019.01.15

+ Recent posts