2015-05-07 3 views
1

Я создал элемент, содержащий кнопку. Я пытаюсь закрыть родительское окно элемента с помощью этой кнопки, но я получаю это сообщение, когда выберите пункт:Не удается закрыть окно с помощью кнопки: QML

TypeError: Property 'close' of object QQuickRootItem(0x1d8efed8) is not a function

Можете ли вы помочь мне с этим?

Код товара:

import QtQuick 2.4 

Item { 

    id: backButton 

    ItemForButton{ 

     id: baseButton 
     text: "Back" 

     onClicked: { 

      backButton.parent.close() 
     } 

    } 

} 

Код для окна:

Window { 

     id: window 
     visible: true 
     BackButton { 

     } 
     x: 30 
     y: 30 
    } 

ответ

4

Это кажется немного неаккуратно. Если бы я был вами, я бы добавил сигнал щелчка к типу пользовательской кнопки. Например:

товара:

import QtQuick 2.4 

Item { 
    id: backButton 

    // Add a clicked signal here 
    signal clicked() 

    ItemForButton{ 

     id: baseButton 
     text: "Back" 

     onClicked: { 
      // Emit the new clicked signal here: 
      backButton.clicked(); 
     } 
    } 
} 

Окно:

Window { 
    id: window 
    visible: true 

    BackButton { 
     // Respond to the signal here. 
     onClicked: window.close(); 
    } 
} 

Это обеспечивает гибкость использования вашего пользовательского типа BackButton другими способами в будущем.

+1

Этот вопрос не отвечает, почему родитель BackButton не является окном. Я думаю, что нужно знать, что Window не является 'QQuickItem' и поэтому не может быть' parent' (свойство, а не функция) для любого 'QQuickItem'. – Arpegius

+0

Я уже сделал, как вы написали. Спасибо. Кажется, что мой код не может быть выполнен из-за объема. –

Смежные вопросы