LINUX.ORG.RU

История изменений

Исправление EXL, (текущая версия) :

Как создать маленькое полупрозрачное окно?

С Qt 5.15, технологией QtQuick и языком программирования QML очень просто.

Код в файле Overlay.qml:

import QtQuick 2.15
import QtQuick.Window 2.15

Window {
    color: Qt.rgba(0.0, 0.0, 0.0, 0.5)

    id: window
    visible: true
    flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.WA_TranslucentBackground

    Shortcut {
        sequence: "Esc"
        onActivated: window.close()
    }

    DragHandler {
        id: resizeHandler
        onActiveChanged: if (active) {
            const p = resizeHandler.centroid.position
            let e
            if (p.x / width  < 0.10) { e |= Qt.LeftEdge }
            if (p.x / width  > 0.90) { e |= Qt.RightEdge }
            if (p.y / height < 0.10) { e |= Qt.TopEdge }
            if (p.y / height > 0.90) { e |= Qt.BottomEdge }
            if (e) { window.startSystemResize(e) } else { window.startSystemMove() }
        }
    }
}

Запуск программы:

QT_QPA_PLATFORM=xcb qmlscene Overlay.qml

✔ Простой строкой в консоли создать окно без всяких декораций.
✔ Полупрозрачное по заданному проценту.
✔ Поверх всех окон.
✔ Оно должно перетаскиваться мышой.
✔ Должен изменяться размер.
✔ Выглядит просто как полупрозрачный прямоугольник.

Цвет и полупрозрачность прямоугольника настраивается в функции Qt.rgba(0.0, 0.0, 0.0, 0.5), изначально установлена в 50%, первые три компоненты отвечают за цвет в RGB-формате. Таскать окно по экрану можно зажав кнопку мыши в центре окна и перемещая курсор, размер изменяется аналогичным образом но по краям прямоугольника. На клавишу Esc задан выход. Выглядит всё следующим образом:

При желании можно оформить в отдельный исполняемый файл, но мне лень.

http://esxi.z-lab.me:666/~exl_lab/movies/Overlay.webm

Исправление EXL, :

Как создать маленькое полупрозрачное окно?

С Qt 5.15, технологией QtQuick и языком программирования QML очень просто.

Код в файле Overlay.qml:

import QtQuick 2.15
import QtQuick.Window 2.15

Window {
    color: Qt.rgba(0.0, 0.0, 0.0, 0.5)

    id: window
    visible: true
    flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.WA_TranslucentBackground

    Shortcut {
        sequence: "Esc"
        onActivated: window.close()
    }

    DragHandler {
        id: resizeHandler
        onActiveChanged: if (active) {
            const p = resizeHandler.centroid.position
            let e
            if (p.x / width  < 0.10) { e |= Qt.LeftEdge }
            if (p.x / width  > 0.90) { e |= Qt.RightEdge }
            if (p.y / height < 0.10) { e |= Qt.TopEdge }
            if (p.y / height > 0.90) { e |= Qt.BottomEdge }
            if (e) { window.startSystemResize(e) } else { window.startSystemMove() }
        }
    }
}

Запуск программы:

QT_QPA_PLATFORM=xcb qmlscene Rect.qml

✔ Простой строкой в консоли создать окно без всяких декораций.
✔ Полупрозрачное по заданному проценту.
✔ Поверх всех окон.
✔ Оно должно перетаскиваться мышой.
✔ Должен изменяться размер.
✔ Выглядит просто как полупрозрачный прямоугольник.

Цвет и полупрозрачность прямоугольника настраивается в функции Qt.rgba(0.0, 0.0, 0.0, 0.5), изначально установлена в 50%, первые три компоненты отвечают за цвет в RGB-формате. Таскать окно по экрану можно зажав кнопку мыши в центре окна и перемещая курсор, размер изменяется аналогичным образом но по краям прямоугольника. На клавишу Esc задан выход. Выглядит всё следующим образом:

При желании можно оформить в отдельный исполняемый файл, но мне лень.

http://esxi.z-lab.me:666/~exl_lab/movies/Overlay.webm

Исходная версия EXL, :

Как создать маленькое полупрозрачное окно?

С Qt 5.15, технологией QtQuick и языком программирования QML очень просто.

Код в файле Overlay.qml:

import QtQuick 2.15
import QtQuick.Window 2.15

Window {
    color: Qt.rgba(0.0, 0.0, 0.0, 0.5)

    id: window
    visible: true
    flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.WA_TranslucentBackground

    Shortcut {
        sequence: "Esc"
        onActivated: window.close()
    }

    DragHandler {
        id: resizeHandler
        onActiveChanged: if (active) {
            const p = resizeHandler.centroid.position
            let e
            if (p.x / width  < 0.10) { e |= Qt.LeftEdge }
            if (p.x / width  > 0.90) { e |= Qt.RightEdge }
            if (p.y / height < 0.10) { e |= Qt.TopEdge }
            if (p.y / height > 0.90) { e |= Qt.BottomEdge }
            if (e) { window.startSystemResize(e) } else { window.startSystemMove() }
        }
    }
}

Запуск программы:

QT_QPA_PLATFORM=xcb qmlscene Rect.qml

✔ Простой строкой в консоли создать окно без всяких декораций.
✔ Полупрозрачное по заданному проценту.
✔ Поверх всех окон.
✔ Оно должно перетаскиваться мышой.
✔ Должен изменяться размер.
✔ Выглядит просто как полупрозрачный прямоугольник.

Цвет и полупрозрачность прямоугольника настраивается в функции Qt.rgba(0.0, 0.0, 0.0, 0.5), изначально установлена в 50%, первые три компоненты отвечают за цвет в RGB-формате. Таскать окно по экрану можно зажав кнопку мыши в центре окна и перемещая курсор, размер изменяется аналогичным образом но по краям прямоугольника. На клавишу Esc задан выход. Выглядит всё следующим образом:

http://esxi.z-lab.me:666/~exl_lab/movies/Overlay.webm