Отображение полупрозрачного / окна неправильной формы с QT

Можно использовать Graphviz для генерации схем в формате SVG. Существует привязка Python к Graphviz, например, pydot - интерфейс Python на Точечный язык Graphviz.

12
задан Tony the Pony 26 August 2009 в 10:01
поделиться

2 ответа

Да, это возможно. Ключ - это атрибут Qt :: WA_TranslucentBackground для QWidget

Вот простой класс, который рисует круглое полупрозрачное окно с красным фоном 50% альфа.

TranslucentRoundWindow.h:

#include <QWidget>

class TranslucentRoundWindow : public QWidget
{
    public:
        TranslucentRoundWindow(QWidget *parent = 0);
        virtual QSize sizeHint() const;

    protected:
        virtual void paintEvent(QPaintEvent *paintEvent);
};

TranslucentRoundWindow.cpp:

#include <QtGui>

#include "TranslucentRoundWindow.h"

TranslucentRoundWindow::TranslucentRoundWindow(QWidget *parent) : QWidget(parent, Qt::FramelessWindowHint)
{
    setAttribute(Qt::WA_TranslucentBackground);
}

QSize TranslucentRoundWindow::sizeHint() const
{
    return QSize(300, 300);
}

void TranslucentRoundWindow::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setPen(Qt::NoPen);
    painter.setBrush(QColor(255, 0, 0, 127));

    painter.drawEllipse(0, 0, width(), height());
}

Если вы хотите иметь возможность перемещать это окно с помощью мыши, вам придется переопределить mousePressEvent , mouseMoveEvent и mouseReleaseEvent ].

11
ответ дан 2 December 2019 в 21:03
поделиться

Конечно, это возможно. Qt поставляется с демонстрацией "Shaped Clock". Документация здесь .

Создает окно верхнего уровня странной формы. Должно быть все, что вам нужно.

3
ответ дан 2 December 2019 в 21:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: