반응형

d- bus 통신 예제 입니다.

작은 창이 Send 이며


보낸 데이터는 큰창이 받아 출력하고 있습니다.






viewer

Profile 추가 내용

DBUS_ADAPTORS += org.test.xml
DBUS_INTERFACES += org.test.xml

viewer.h
#ifndef VIEWER_H
#define VIEWER_H

#include 

class Viewer : public QObject
{
    Q_OBJECT

    Q_PROPERTY(int number READ number NOTIFY numberChanged)

signals:
    void onchanged();
    void numberChanged(int n);

public:
    Viewer(QObject *parent = 0);
    int number();


public slots:

    void getNumber(int number);


private:
    int getnumber = 0;

};

#endif // VIEWER_H


viewer.cpp
#include "viewer.h"

#include 
#include 

#include "chat_adaptor.h"
#include "chat_interface.h"

Viewer::Viewer(QObject *parent)
{
    QDBusConnection::sessionBus().registerObject("/", parent);

    org::example::chat *iface;

    iface = new org::example::chat(QString(), QString(),  QDBusConnection::sessionBus(), parent);

    connect(iface, SIGNAL(message(int)), this, SLOT(getNumber(int)));
}

void Viewer::getNumber(int number)
{
    getnumber = number;

    qDebug() << "getnumber :" << getnumber;

    emit numberChanged(number);
}


int Viewer::number()
{
    return getnumber;
}


main.cpp
#include 
#include 

#include 
#include 

#include "viewer.h"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;

    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));


    Viewer viewer(app.focusObject());

    engine.rootContext()->setContextProperty("mw", &viewer);

    return app.exec();
}

main.qml
import QtQuick 2.3
import QtQuick.Controls 1.2





ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")


    Label {
        id: lablel
        text: mw.number;
        anchors.centerIn: parent


    }

}


Data send

send.h

#ifndef SEND_H
#define SEND_H

#include
#include 
#include 


class WorkerThread : public QThread
{

    Q_OBJECT

    void run();

};



class SEND :public QObject
{
    Q_OBJECT

    Q_PROPERTY(int number READ number NOTIFY numberChanged)


signals:
    void numberChanged();

public:
    explicit SEND(QObject *parent = 0);

    void careateRandomNumber();

    void send();
//    void dbusConnection();

    int number();

public slots:
    int randnumber();
    void update();

private:
    int rand;
    QDBusMessage msg;
};

#endif // SEND_H







send.cpp
#include 
#include 
#include 

#include "send.h"

SEND::SEND(QObject *parent)
{

    careateRandomNumber();

    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(update()));
    timer->start(1000);

//    WorkerThread t;
//    t.start();

}

void SEND::careateRandomNumber()
{

    QTime now = QTime::currentTime();
    qsrand(now.msec());

    rand = qrand();
}

void SEND::send()
{
    careateRandomNumber();

    if (QDBusConnection::sessionBus().isConnected()) {

        msg = QDBusMessage::createSignal("/", "org.example.chat", "message");
        qDebug() << "send message : " << rand;

        msg << rand;
        QDBusConnection::sessionBus().send(msg);
        emit numberChanged();
   
    }

}

void SEND::dbusConnection()
{


    QDBusConnection::sessionBus().registerObject("/", this);


    if (QDBusConnection::sessionBus().isConnected()) {
        msg = QDBusMessage::createSignal("/", "org.example.chat", "message");

    }
}

int SEND::number()
{
    return rand;
}

int SEND::randnumber()
{
    return rand;
}

void SEND::update()
{

    send();

}

void WorkerThread::run()
{
      qDebug()<<"From worker thread: ";
}



main.cpp
#include 
#include 
#include 

#include "send.h"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

//    qmlRegisterType ("Send", 1,0, "SendClass");


    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));


//    Viewer viewer(app.focusObject());

    SEND send(app.focusObject());

    engine.rootContext()->setContextProperty("send", &send);


    return app.exec();
}



main.qml
import QtQuick 2.3
import QtQuick.Window 2.2
import QtQuick.Controls 1.3

Window {
    id :root

    visible: true

    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }


    Text {
        id : sendnumber
        text: send.number
        anchors.centerIn: parent
    }


}




반응형

'programming > Qt' 카테고리의 다른 글

Virtualbox 에서 QtCreator 실행  (0) 2016.02.02
qml signal /slot  (0) 2015.09.25
qmlRegisterType  (0) 2015.09.14
여러개의 파일 확장자 변경 유틸리티  (0) 2012.07.03
Qt [UI] css를 이용한 버튼 효과주기  (0) 2012.06.07
반응형

우선 기존 Virtualbox에서 우분투를 실행시  0x00000000 관련 에러를 출력 하여 사용이 어려워

아래의 버전으로 사용중입니다.




문제는 Virtualbox 환경설정에서 3d 지원을 사용을 하면 VirtualBox가 빠르지만  Qtcreate가 바로 꺼지는 현상이 있습니다.



해결 방법은..

1. Qt Creator 설치된 폴더로 이동.

2..edit 편집기로 qtcreator.sh 파일을 엽니다.

3. export LIBGL_ALWAYS_SOFTWARE=1  <-- 추가

4. 저장합니다.

5. cd .local/share/applications/ 폴더로 이동.

6.  edit 편집기로 DigiaQtOpenSource-qtcreator.desktop 파일을 엽니다.

7. Exec=/home/dmchoi/Qt5.2.0/Tools/QtCreator/bin/qtcreator

  --> Exec=/home/dmchoi/Qt5.2.0/Tools/QtCreator/bin/qtcreator.sh
8. 저장합니다.

9. qtcreator 실행을 합니다.




실행시

./qtcreator.sh 로 실행하면

아래와 같이 잘 실행됩니다.


반응형

'programming > Qt' 카테고리의 다른 글

Qt d-bus 예제  (0) 2016.02.11
qml signal /slot  (0) 2015.09.25
qmlRegisterType  (0) 2015.09.14
여러개의 파일 확장자 변경 유틸리티  (0) 2012.07.03
Qt [UI] css를 이용한 버튼 효과주기  (0) 2012.06.07
반응형




서로 다른 qml 에서 signal /slot 연결하기 






시그널 생성 





위와 같이 받아서 사용하시면됩니다.


반응형

'programming > Qt' 카테고리의 다른 글

Qt d-bus 예제  (0) 2016.02.11
Virtualbox 에서 QtCreator 실행  (0) 2016.02.02
qmlRegisterType  (0) 2015.09.14
여러개의 파일 확장자 변경 유틸리티  (0) 2012.07.03
Qt [UI] css를 이용한 버튼 효과주기  (0) 2012.06.07
반응형


 

사용예

qmlRegisterType<Hello>("testhello",1,0,"HiClass");

qmlRegisterType<클래스명명> ("사용할접근주소", 큰버전, 작은버전, "QML에서 쓸 이름");

 

 

사용법


1. 클래스 생성

위와같이 qDebug() 을 사용할경우 #include <QDebug> 선언이 필요합니다.    


2.  main.cpp 작성


qmlRegisterType<Hello>("testhello",1,0,"HiClass");

 



4. QML 아래와깉이 선언


Import testhello 1.0

 아래와 같이  QML내에서 사용이 가능하다.

HiClass{

        id : test

        Component.onCompleted: {

            test.test();

        }

}

 

반응형

'programming > Qt' 카테고리의 다른 글

Qt d-bus 예제  (0) 2016.02.11
Virtualbox 에서 QtCreator 실행  (0) 2016.02.02
qml signal /slot  (0) 2015.09.25
여러개의 파일 확장자 변경 유틸리티  (0) 2012.07.03
Qt [UI] css를 이용한 버튼 효과주기  (0) 2012.06.07
반응형

폴더 확장자 변경 유틸리티

다운받기 - > rename.rar





사용방법

1. 확장자를 변경할곳을 지정 

2. before   변경할 확장자
3. after 변경을 원하는 확장자

ok 클릭



반응형

'programming > Qt' 카테고리의 다른 글

Qt d-bus 예제  (0) 2016.02.11
Virtualbox 에서 QtCreator 실행  (0) 2016.02.02
qml signal /slot  (0) 2015.09.25
qmlRegisterType  (0) 2015.09.14
Qt [UI] css를 이용한 버튼 효과주기  (0) 2012.06.07
반응형

1. 프로젝트를 생성하고 
우선 Resources 에 그림파일추가 


mainwindow.ui 를 클릭하여 Design 폼으로 이동

PushButton에서 우클릭! 

change stylesheet...  클릭!



텍스트 창에서 우클릭 하여 

border-image간단히 추가할 수 있다.


QPushButton:disabled

QPushButton:hover

QPushButton:pressed

사용 예제 

QPushButton {

border: 7px ;   

border-image: url(:/img/button/D:/Work/img/button/button.png) 7 7 7 7;

padding: -7px;

}

QPushButton:disabled{

border-image: url(:/img/button/D:/Work/img/button/button-disabled.png) 7 7 7 7;

}

QPushButton:hover{

border-image: url(:/img/button/D:/Work/img/button/button-hover.png) 7 7 7 7;

}

QPushButton:pressed{

border-image: url(:/img/button/D:/honam/Work/img/button/button-pressed.png) 7 7 7 7;

}


padding: -7px;    하면  버튼size가 작아졌을 때 글씨가 잘려 보이지 않는다 .

border-image : 이미지url   top right bottom left ;   로 되어 있음!

버튼에 마우스 올리기전 


버튼에 마우스를 올린 후 

이렇게 간단히 버튼의 효과를 줄 수 있다. 




반응형

'programming > Qt' 카테고리의 다른 글

Qt d-bus 예제  (0) 2016.02.11
Virtualbox 에서 QtCreator 실행  (0) 2016.02.02
qml signal /slot  (0) 2015.09.25
qmlRegisterType  (0) 2015.09.14
여러개의 파일 확장자 변경 유틸리티  (0) 2012.07.03

+ Recent posts