일단 한글 입력기는 하단 링크 참조하여 설치 (uim만 지원되는듯 다른입력기는 안되거나 미실행 14.04버전 기준)

http://egloos.zum.com/nemonein/v/5269535


그 다음 QLineEdit를 상속받는 커스텀 클래스하나 생성
코드설명 (이 방법은 정석이 아닌 편법입니다.)

1. QLineEdit를 상속받아 input method event를 낚아챈다.
2. 커스터마이징한 클래스 내부에 마지막 글자를 저장하는 변수를 하나 남겨둔다.
3. 사용자로부터 한글 값을 요구하는 함수가 호출되면 저장된 텍스트+마지막값을 붙여서 리턴한다.



//header 
#ifndef CUSTOMHANGLELINEEDIT_H 
#define CUSTOMHANGLELINEEDIT_H 

#include <QLineEdit> 

class CustomHangleLineEdit : public QLineEdit 

Q_OBJECT 
public: 
explicit CustomHangleLineEdit(QWidget *parent = 0); 

void inputMethodEvent(QInputMethodEvent* e); 
QString getHangle(); 

private : 
QString m_last; 
}; 

#endif // CUSTOMHANGLELINEEDIT_H 



//cpp
#include <QInputMethodEvent> 
#include <QDebug> 
#include <QLocale> 
#include "customhanglelineedit.h" 

CustomHangleLineEdit::CustomHangleLineEdit(QWidget *parent) : 
QLineEdit(parent) 

setLocale(QLocale::Korean); 


void CustomHangleLineEdit::inputMethodEvent(QInputMethodEvent* e) 

m_last = e->preeditString(); 
QLineEdit::inputMethodEvent(e); 


QString CustomHangleLineEdit::getHangle() 

QString ret = text(); 
ret.append(m_last); 
m_last.clear(); 
//qDebug() << ret; 

return ret; 



ps. uim이아닌 다른 입력메소드는 되는지 확인안됨 (아마 안될거 같음 )
ps2. 편법이니 다른 좋은방법이 있을 수 있습니다.

ps3. 16.04에서는 그냥 fcitx로 됩니당... (구글검색참조)


'Qt' 카테고리의 다른 글

Qt에서 여백주고 싶을때  (0) 2016.12.15
Qt의 Drag&Drop Example  (0) 2016.11.17
Qt의 메모리관리 자매품 std::unique_ptr<int> var;  (0) 2016.11.17
Qt에서 한글쓰고싶다면  (0) 2016.11.17
Qt와 BLE  (0) 2016.11.17

+ Recent posts