본문 바로가기

QT and Symbian20

QT Plugins 폴더 Windows 배포 문제 이번에 작업을 하면서 QT가 설치 되지 않는 컴퓨터에서는 DLL을 모두 포함해서 배포를 해서 실행 해도 프로그램이 강제 종료되는 문제가 발생했다. 원인을 파악한 결과 Plugins 폴더를 함께 배포하지 않아서 발생한 것으로 확인 되었다. 그러나 문제는 Plugins 폴더를 실행 파일과 같은 경로에 추가해도 정상 작동을 하지 않는 것이다. 빌드를 할 때 Plugins 폴더 위치가 배포되는 컴퓨터에도 같은 위치에 존재해야만 정상 작동하는 것을 확인 했다. 빌드 할 때 관련 내용이 실행 파일에 포함되기 때문에 문제를 수정하기 위해서는 아래와 같이 소스에 추가를 해야 한다. QApplication a(argc, argv); #if defined(Q_OS_WIN32) //Windows 배포할 때 필요하다. a.a.. 2020. 7. 24.
Creator Full mode 닫는 단축키 Creator Full Screen mode 닫는 단축키이다.shortcut (CTRL+SHIFT+F11) 2015. 12. 31.
QT PostMessage 대체 사용 방법 고민 기존 프로그램에서 메뉴를 닫을 때(FormClose())가 진행 되면 현재 Dialog를 Delete 할 수 없기 때문에 PostMessage를 이용해서 MainMenuForm에서 ExitForm() 함수가 작동하도록 해서 Event() 흐름이 끝나고 사용한 Dialog(Form)을 삭제하게 했습니다. 그러나 현재 QtTex3D에서는 Dilaog의 X버튼을 눌러 닫을 때 CloseEvent()함수를 오버로딩해서 사용하고 있는데 위의 내용과 마찬가지로 Dialog를 삭제할 수는 없습니다. MainMenuDialog에서 이런 문제점이 있었는데 이 때 QTimer::singleShot(50, mainMenuDialog, SLOT(exitDialog())); 를 이용하면 될 것 같습니다. QTimer::sing.. 2015. 12. 30.
Transition from Qt 4.x to Qt5 (toAscii() to toLatin1()) https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5#toAscii.28.29_and_fromAscii.28.29_Methods_are_deprecated Qt4 버전까진 toAscii() 함수를 사용했지만 Qt5버전부터 toLatin1()으로 함수가 변경되었다. 마이그레이션을 할 때 이부분을 수정해야 한다. 기타 다른 함수들과 사용방법이 변경되었으니 아래 내용을 참고하기 바란다. The transition from Qt 4.x to Qt 5 is not expected to be significant. However, the "modularization" of the Qt code base requires some amount of changes to project c.. 2015. 12. 24.
eventFilter(QObject* object, QEvent* event) 함수 사용하기 각 Widget의 Event를 처리하기 위해서 subclass를 이용해서 class를 만들어 사용하는 것 보다 eventFilter(QObject* object, QEvent* event)함수를 이용하는 것이 개발을 빨리 진행할 수 있다.Dialog에 Widget을 배치하고 Dialog class의 생성자에 필요한 Widget별로 installEventFilter()함수를 설정한다.ex) QLineEdit Widget을 사용하는데 Key Event를 확인하고 싶을 경우에는 아래와 같이 생성장에 설정을 한다. QLineEdit *ed = new QLineEdit(this); ed->installEventFilter(this); bool Dialog::eventFilter(QObject* object, QE.. 2015. 8. 21.
QTableWidget의 Item은 clear()함수로 메모리 누수 없이 삭제가 된다. 메모리 누수가 발생하지 않게 QTableWidget의 Item을 어떻게 삭제할까? 직접 delete item을 해야 하는지 확인을 해보았다. 아래 소스를 보면 clear()함수에서 item을 모두 삭제하고 0으로 초기화 하는 부분을 확인할 수 있다. 따라서 clear()함수만 사용하면 될 것 같다.http://nickguthrie.com/embedd_gui/src/qt-everywhere-opensource-src-4.8.4/src/gui/itemviews/qtablewidget.cpp나와 같은 질문을 올린 글이 있다. 이 글도 같은 내용이다. http://www.qtcentre.org/threads/28470-Does-QTableWidget-clear()-delete-pointers 2015. 7. 20.
QT release compile error (LNK2038: mismatch detected for ‘_ITERATOR_DEBUG_LEVEL': value ‘2’ doesn’t match value ‘0’) QT release compile을 할 때 아래와 같은 에러가 발생했다.error LNK2038: mismatch detected for ‘_ITERATOR_DEBUG_LEVEL': value ‘2’ doesn’t match value ‘0’ 검색 결과 debug로 컴파일 되어 만들어진 *.lib 파일을 이용해서 release로 컴파일 할 경우에 발생한다고 한다. https://technet.microsoft.com/ko-kr/subscriptions/hh697468.aspx Source와 Project - Property Pages에서 확인을 해서 사용하고 있는 lib를 직접 editer로 읽어 보고 _ITERATOR_DEBUG_LEVEL이 존재하는지도 확인을 해 보았다.확인 결과 Qt에서 제공하는 *.. 2015. 7. 3.
QT right-click으로 popup menu 사용하기 아래 싸이트를 참고하기 바랍니다.http://www.setnode.com/blog/right-click-context-menus-with-qt/#fnref:viewportclasses간단하게 설명하면 popup menu를 추가할 위젯에 속성 중 setContextMenuPolicy를 CustomContextMenu로 변경을 합니다.signal/slot 편집기에서 widget을 선택하고 signal: customContextMenuRequested 을 이용합니다.이 signal을 받을 slot 함수를 만들어 사용하면 됩니다.slot 함수에서 QMenu를 만들고 Action을 추가해서 사용합니다.// myWidget is any QWidget-derived class myWidget->setContextMe.. 2015. 6. 18.
Visual Studio에서 QtWinExtras 사용을 위한 세팅방법 QtWin Namespace에서 제공하는 함수를 사용하기 위해서는 QtWinExtras 관련 Include와 link link를 추가하면 된다. 1. 사용하려는 cpp에 #include 를 추가한다. 2. Project Property Pages를 세팅한다. - C/C++ / General / Additional Include Directories 에 $(QTDIR)\include\QtWinExtras 경로를 추가한다. (사용자마다 경로가 다를 수 있다. Qt 설치 된 폴더에 Include를 확인하면 된다.) - Linker / Input / Additional Dependencies 에 Qt5WinExtras.lib 를 추가한다. (만약 Linker / General / Additional Direct.. 2015. 6. 17.
LIST