Я хочу использовать png-изображение с прозрачностью и настраиваемой рамкой в фоне основного фона Qt.Qt mainwindow transparent background
http://www.shiaupload.ir/images/77810787432153420049.png
есть ли хорошая идея?
Я хочу использовать png-изображение с прозрачностью и настраиваемой рамкой в фоне основного фона Qt.Qt mainwindow transparent background
http://www.shiaupload.ir/images/77810787432153420049.png
есть ли хорошая идея?
Вы можете сделать что-то вроде этого:
this->setWindowFlags(Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground);
Затем окрасить фон окна в paint event.
Примечание: Как указал Дмитрий, в Qt4 есть bug with minimizing and restoring the window.
Другой вариант - использовать QWidget::setMask(const QBitmap & bitmap), но это может быть медленным, если регион является сложным.
Привет, можете ли вы указать, как достичь прозрачности через настройка маски? – SexyBeast
@Cupidvogel Недостаточен ли пример в документации? – thuga
Нет, он не работает. Я попытался применить это здесь: http://stackoverflow.com/questions/34372291/qt-render-qframe-with-image-as-background-without-using-wa-translucentbackgrou, я не мог заставить его работать. – SexyBeast
[QWidget :: setMask (const QBitmap & bitmap)] (http://qt-project.org/doc/qt-5.0/qtwidgets/qwidget.html#setMask) и [QPixmap :: mask()] (http : //qt-project.org/doc/qt-5.0/qtgui/qpixmap.html#mask) может быть то, что вы ищете. – thuga
Вы также можете сделать что-то вроде 'this-> setWindowFlags (Qt :: FramelessWindowHint);' 'this-> setAttribute (Qt :: WA_TranslucentBackground);' и затем нарисовать свой фон. – thuga
@thuga - ваше последнее сообщение - ответ. Я хочу добавить, что если используется Qt4 - есть ошибка с минимизацией и восстановлением окна: https://bugreports.qt-project.org/browse/QTBUG-17548 –