Russian Qt Forum
Ноябрь 02, 2024, 04:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обработка сигнала из С++ в QML  (Прочитано 2669 раз)
Go0gle
Гость
« : Июль 09, 2012, 20:01 »

Здравствуйте, помогите пожалуйста разобраться с одним моментом.

---Test.h---
Код:
class TestClass : public QObject
{
    Q_OBJECT
public:
    explicit TestClass(QObject *parent = 0);

   
    Q_PROPERTY(QString firstName READ getFirstName WRITE setFirstName NOTIFY firstNameChanged)

signals:
    void firstNameChanged( const QString& name);
   

public slots:
    QString getFirstName()  const { return m_name; }
    int setFirstName(QString name);
    void changeName();

   
private:
    QString m_name;
    QPushButton* m_changeNameButton;
};

---Test.cpp---
Код:
TestClass::TestClass(QObject *parent) :
    QObject(parent)
{
    m_changeNameButton = new QPushButton("Change");
    connect(m_changeNameButton,SIGNAL(clicked()),this,SLOT(changeName()));
    m_changeNameButton->show();

    changeName();
}

int TestClass::setFirstName(QString name)
{
    m_name = name;
    emit firstNameChanged(m_name);
}

void TestClass::changeName()
{
    setFirstName("New Name");
}

--main.qml---
Код:
Rectangle {

    id: mainWindow
    width: 600
    height: 600
    color: "#343434"

    Test
    {
        onFirstNameChanged: {
            console.log("QML: Name changed!");
        }
    }

}


Вопрос в следующем....

Как видите в конструкторе я вызываю   changeName(); При этом я должен получить сообщение  из QML , но я его не получаю...
Но если я нажму на кнопку, то сообщение успешно выводиться на экран, хотя опять же с помощью кнопки я вызываю тот же метод changeName();

Подскажите , пожалуйста, в чем может быть проблема? 
Записан
Patrin Andrey
Гость
« Ответ #1 : Июль 10, 2012, 08:56 »

До тех пор, пока конструктор полностью отработает, объект ещё не создан.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 20.