BlinCT
BlinCTJuly 9, 2016, 5 p.m.

Создание окна поверх остальных

Android, qml, Rectangle, Диалоговое окно

Всем привет.
Пытаюсь найти инфу о том, как, например, при нажатии на какую-то кнопку поверх программы появляется окно. То есть по центру и все, что под ним находится темнеет немного.
Думал, что это обычный Rectangle, но похоже, что нет.
Если кто может кинуть какой-то грубый набросок примера или ссылку с оф сайта, буду признателен.
Пытаюсь это реализовать в QML.
Заранее благодарю.
We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

1
Evgenii Legotckoi
  • July 10, 2016, 2:48 a.m.
  • The answer was marked as a solution.

Полагаю, что здесь идёт разговор о диалоговом окне. Здесь нужно делать появляющийся фон и само диалоговое окно. Меня не впечатлили дефолтные Диалоги, поэтому я на данный момент пользуюсь следующим вариантом, который покажу на примере простого приложения:
main.qml

import QtQuick 2.7
import QtQuick.Controls 1.5
 
ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
 
    Button {
        text: "Click Me"
        anchors.centerIn: parent
        onClicked: {
            dialog.showDialog()
        }
    }
 
    SimpleDialog {
        id: dialog
        contentText: qsTr("Check Text")
        onBack: hideDialog()
    }
}

Затемняющийся фон, который выкидывает сигнал back(), когда по нему кликают:
DialogBackground.qml

import QtQuick 2.0
 
Rectangle {
    id: root
 
    signal backClicked
 
    color: "#333"
    anchors.fill: parent
    opacity: 0
    state: "hideBack"
    visible: false
 
    states: [
        State {
            name: "hideBack"
            PropertyChanges { target: root; opacity: 0;}
        },
        State {
            name: "showBack"
            PropertyChanges { target: root; opacity: 0.7;}
        }
    ]
 
    transitions: Transition {
        from: "hideBack"; to: "showBack"; reversible: true
        NumberAnimation { properties: "opacity"; duration: 250;}
    }
 
    MouseArea {
        anchors.fill: parent
        onClicked: backClicked()
    }
 
    function show(){
        root.visible = true
        root.state = "showBack"
    }
 
    function hide(){
        root.visible = false
        root.state = "hideBack"
    }
}

И сам диалог, который тоже выкидывает сигнал back(), когда нажимают по тексту Back (данный текст выполняет роль кнопки). Там же сделана реализация пересчёта положения диалога, когда открывается виртуальная клавиатура на мобильных устройствах, типа Android, к примеру.
SimpleDialog.qml

import QtQuick 2.7
import QtQuick.Controls 1.4
 
Item {
    id: root
    signal back
    property alias contentText: dialogText.text
    anchors.fill: parent
    visible: false
 
    DialogBackground {
        id: dialogBackground
        onBackClicked: {
            hideDialog()
        }
    }
 
    Rectangle {
        id: dialog
        width: 240
        height: 220
        radius: 4
        color: "whitesmoke"
        anchors.top: parent.top
        anchors.topMargin: {
            Qt.inputMethod.visible ?
                        (parent.height - Qt.inputMethod.keyboardRectangle.height - dialog.height)/2 :
                        (parent.height - dialog.height)/2;
        }
        anchors.horizontalCenter: parent.horizontalCenter
 
        Text {
            id: dialogText
            wrapMode: Text.Wrap
            color: "black"
            anchors {
                top: parent.top
                left: parent.left
                right: parent.right
                margins: 16
            }
 
            font.pixelSize: 16
 
            verticalAlignment: Text.AlignVCenter
            horizontalAlignment: Text.AlignHCenter
        }
 
        Text {
            id: textBack
            text: qsTr("Back")
            color: "black"
            visible: true
 
            anchors.right: parent.right
            anchors.bottom: parent.bottom
            anchors.margins: 16
 
            font.pixelSize: 24
 
            verticalAlignment: Text.AlignVCenter
            horizontalAlignment: Text.AlignHCenter
 
            MouseArea {
                anchors.centerIn: parent
                width: parent.paintedWidth
                height: parent.paintedHeight
                onClicked: back()
            }
        }
    }
 
    function showDialog() {
        dialogBackground.show()
        root.visible = true
    }
 
    function hideDialog() {
        dialogBackground.hide()
        root.visible = false
    }
}

    Comments

    Only authorized users can post comments.
    Please, Log in or Sign up
    AD

    C ++ - Test 004. Pointers, Arrays and Loops

    • Result:50points,
    • Rating points-4
    m

    C ++ - Test 004. Pointers, Arrays and Loops

    • Result:80points,
    • Rating points4
    m

    C ++ - Test 004. Pointers, Arrays and Loops

    • Result:20points,
    • Rating points-10
    Last comments
    ИМ
    Игорь МаксимовNov. 22, 2024, 7:51 p.m.
    Django - Tutorial 017. Customize the login page to Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
    Evgenii Legotckoi
    Evgenii LegotckoiOct. 31, 2024, 9:37 p.m.
    Django - Lesson 064. How to write a Python Markdown extension Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
    A
    ALO1ZEOct. 19, 2024, 3:19 p.m.
    Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
    ИМ
    Игорь МаксимовOct. 5, 2024, 2:51 p.m.
    Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
    d
    dblas5July 5, 2024, 6:02 p.m.
    QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
    Now discuss on the forum
    m
    moogoNov. 22, 2024, 3:17 p.m.
    Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
    Evgenii Legotckoi
    Evgenii LegotckoiJune 24, 2024, 10:11 p.m.
    добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
    t
    tonypeachey1Nov. 15, 2024, 2:04 p.m.
    google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
    NSProject
    NSProjectJune 4, 2022, 10:49 a.m.
    Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

    Follow us in social networks