setWindowFlags(Qt::WindowStaysOnTopHint);

QWidget 계열 상속라인에서 사용할수 있는 플래그입니다.
생성자에 사용하세요.



'Qt' 카테고리의 다른 글

Qt에서 스타일 시트 쓰기  (0) 2016.12.15
Qt4.8에서 Json Parser사용하기  (0) 2016.12.15
Qt에서 여백주고 싶을때  (0) 2016.12.15
Qt의 Drag&Drop Example  (0) 2016.11.17
QLineEdit에서 한글입력하기 우분투 14.04 (QT4.8기준)  (0) 2016.11.17

위젯에 
this->setStyleSheet("margin-left:3;");

스타일시트의 마진을 줘서 해결하면 됀다.

음... 사실 내코드는아니고 공식사이트에 나와있는데(...) 나중에 찾기쉬우라고 올려둠


draggabletext.tar.gz


출처 : QtExample


일단 한글 입력기는 하단 링크 참조하여 설치 (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

QObject 계열을 상속받아 사용한다는 가정하에

1.
QScopedPointer<className > widget(new  className);
className->myfunction;

2.
QWidget * mywidget = new QWidget(this);

이거 두개로 종결


QScopedPointer는 외부 클래스에서 사용되지 않는 동적 메모리에 한해 예외상황이 발생해도 메모리 누수없이 자동적으로 Delete역활을 해준다. ( private에 Q_DISABLE_COPY 매크로 선언 필수(Deep Copy 미지원))
일반적인 객체를 삽입해도 내부적으로 포인터처럼 사용할 수 있는 객체이다. 그냥 c++11 의 유니크 포인터와같다.

두번째 부분은 Qt좀 해본사람이라면 다알겠지만 QObject 상속계통의 메모리를 자신의 부모객체에
OnwerShip을 넘겨 안전하게 자동 삭제 하는 방법이다.



AllocForget 패턴이라고 불리기도하는데 저거 두개는 QString만큼 자주쓰는 유용한 메모리 관리방식이다 강추하는 바이다.


ps. 둘다 delete가 필요없으며 QScopedPointer는 delete하면 컴파일 에러난다.
ps2. 둘다 예외상황에서도 delete를 자동으로 하나 내가원하는 타이밍에 delete하려면 따로 처리를 해야한다.
ps3. OnwerShip을 지원하지 않는 Qt라이브러리가 있다 꼭 doc(F1과 Example은 너와 나의 친구)을 보고 유무를 확인하고 사용한다.

'Qt' 카테고리의 다른 글

Qt의 Drag&Drop Example  (0) 2016.11.17
QLineEdit에서 한글입력하기 우분투 14.04 (QT4.8기준)  (0) 2016.11.17
Qt에서 한글쓰고싶다면  (0) 2016.11.17
Qt와 BLE  (0) 2016.11.17
우분투 버전 갈아타기  (0) 2016.11.17

무.조.건 QStrig::fromUtf8("한글"); 을쓰자...


깨지는 꼴보기 싫으면




4.0 이상 버전을 지원하는저전력 블루투스 
크게 Connection 전의 Advertiser(Client), Scanner(Server) 
후의 Master(Server), Slave(Client) 

advertising시에 서버는 응답을 할수도 안할수도 있으며 

응답할경우 ScanRequest를 통해 추가정보를 요구하고 
Resp를 통해 클라이언트는 대답한다

Qt에서는 5.4버전 이상에서 지원한다.


예제소스는 내키지가않아서 그냥 맛보기만올림-ㅁ-


#include <QBluetoothServiceDiscoveryAgent>


PBLEDiscovery::PBLEDiscovery(QObject *parent) :

    QObject(parent)

{

    agent = new QBluetoothDeviceDiscoveryAgent(this);

    connect(agent, SIGNAL(deviceDiscovered(const QBluetoothDeviceInfo&)),

            this, SLOT(addBluetooth(const QBluetoothDeviceInfo&)));


    connect(agent, SIGNAL(error(QBluetoothDeviceDiscoveryAgent::Error)),

            this, SLOT(deviceScanError(QBluetoothDeviceDiscoveryAgent::Error)));


    connect(agent, SIGNAL(finished()), this, SLOT(deviceScanFinished()));


    qDebug() << "Search";


    startDeviceDiscovery();

}



'Qt' 카테고리의 다른 글

Qt의 메모리관리 자매품 std::unique_ptr<int> var;  (0) 2016.11.17
Qt에서 한글쓰고싶다면  (0) 2016.11.17
우분투 버전 갈아타기  (0) 2016.11.17
Qt에서 Enum값을 스트링형태로 사용하기  (0) 2016.11.17
Qt의 tr매크로  (0) 2016.11.17

OS : 16.04 LTS
IDE : 4.8.6-> 5.5.1 

한글의 경우 fcitx-hangul 만 apt-get 으로 설치하면 끝(오히려 잡다하게깔면 죄다먹통)
어플리케이션에서 사용하고싶으면 라이브러리 추가설치 


이상하게 언어 지원 패키지에서 한글설치하면 먹통이됨  그냥
Language Support 에서는 fcitx만 키보드설정 눌러주고 바로나온다음

Text Entry로 가서 hangul(fcitx)랑 Engilsh(US)만 +로 눌러주자
MariaDB랑 Mysql 호환되는것 확인

QLineEdit에서 정상 한글타자 확인.



'Qt' 카테고리의 다른 글

Qt의 메모리관리 자매품 std::unique_ptr<int> var;  (0) 2016.11.17
Qt에서 한글쓰고싶다면  (0) 2016.11.17
Qt와 BLE  (0) 2016.11.17
Qt에서 Enum값을 스트링형태로 사용하기  (0) 2016.11.17
Qt의 tr매크로  (0) 2016.11.17

Q_ENUMS 매크로를 사용하고 해당클래스내에 Enum을 정의하면된다.


예를들면

enum car{
hyundai = 0 ,
kia,
samsung,
gm}

이런식으로 enum이있다면
실제값은 0,1,2,3이지만

qt의 메타오브젝트 시스템을 이용해 해당값을 변환하면
스트링형태로 "hyundai" 요런식으로 변환할 수 있다.



예제 참고 : http://stackoverflow.com/questions/34281682/qt-how-to-convert-enum-to-qstring



'Qt' 카테고리의 다른 글

Qt의 메모리관리 자매품 std::unique_ptr<int> var;  (0) 2016.11.17
Qt에서 한글쓰고싶다면  (0) 2016.11.17
Qt와 BLE  (0) 2016.11.17
우분투 버전 갈아타기  (0) 2016.11.17
Qt의 tr매크로  (0) 2016.11.17

tr("text"); // QString형태로 리턴

tr을 왜쓰냐면 다중언어를 지원하기위해 사용한다.
QObject를 상속받거나 static 함수를 호출하면 사용할 수 있는데
각문자들은 별도의 파일로 만들어져 해당파일에서 변환하고자 하는 국가언어로 변환하면 해당문자들이 변경된다.

qt 문서나 예제들에서 공식적으로 tr매크로를 사용하는걸 권장한다.


네임스페이스 QObject


QObject::tr();

'Qt' 카테고리의 다른 글

Qt의 메모리관리 자매품 std::unique_ptr<int> var;  (0) 2016.11.17
Qt에서 한글쓰고싶다면  (0) 2016.11.17
Qt와 BLE  (0) 2016.11.17
우분투 버전 갈아타기  (0) 2016.11.17
Qt에서 Enum값을 스트링형태로 사용하기  (0) 2016.11.17

+ Recent posts