본문 바로가기

전체 글319

MSXML2 사용중 xmlns="" 자동 추가되는 문제 해결 방법 MSXML2를 이용해서 XML을 처리하는데 문제가 발생해서 자료를 찾아보았다. appendChild를 하면 xmlns=""이 자동으로 들어가는 문제였다. MFC를 개발 경력 10년이 넘어서 처음으로 하는데 너무 불편한 것이 많다. 아래 글과 같이 XML Namespace를 처리하는 방식 때문인데 Dom의 namespace와 일치시켜면 자동으로 들어가지 않는다. 맨처음 DOM의 namespaceURI를 얻어와서 처리를 해 봤는데 NULL이 들어있다. 분면 XML에는 xmlns가 있는데도 말이다. 왜일까? 찾아봐야 할 것이 너무 많다. 직접 Root의 Attribute를 파싱해서 xmlns를 얻어오고 createNode를 이용해서 namespace를 직접 넣어주면 문제없이 잘 처리가 된다. 자신이 사용하는 .. 2016. 3. 7.
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::single.. 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.
Visual Studio "he optimize pragma" 처리 The optimize pragma라는 것이 있군요. 이것을 이용하면 특정 함수 부분에 optimize을 사용하지 않도록 가능합니다. 현재 수정 및 테스트 중~ 잘 해결되었으면 좋겠네요. https://msdn.microsoft.com/en-us/library/chh3fb0k.aspx 2015. 12. 22.
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.
Disable optimization option at some function in Visual Studio Disable optimization option at some function in Visual Studio개발을 하다보면 Debug 모드에서는 잘 작동하는 것이 Release에서는 작동이 안되는 경우가 있다. Visual Studio 컴파일 옵션을 보면 Optimization이 있다. 이것을 사용하면 확실히 실행파일에 속도 향상을 확인 할 수 있다. 하지만 optimization이 기존 소스를 수정하기 때문에 원하는 방향을 함수나 코드가 작동하지 않는 경우가 발생한다. QT 개발로 C++ Builder만 사용하다가 Visual Studio를 사용하면서 이 부분을 몰라 고생을 했다.특정 함수나 영역에 최적화가 되지 않게 처리하기 위한 방법이 있다. 함수 밖, 위에 off를 하고 함수 끝, 밖에 on을 .. 2015. 7. 10.
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.