Я так понимаю, вы хотите видеть сквозь стыковочную планку только когда она плавает. Когда он не (пристыкован), это не имеет смысла, потому что позади нет ничего, что нужно было бы показать.
Использование setAttribute(Qt::WA_TranslucentBackground)
помогает. Я под Linux, надеюсь, он также работает для Windows (я нашел несколько сообщений, где люди дополнительно устанавливали setAttribute(Qt::WA_NoSystemBackground)
, для меня это не имело значения под Linux, если Qt::WA_TranslucentBackground
вам недостаточно , попробуйте оба варианта).
#include <QMainWindow>
#include <QApplication>
#include <QDockWidget>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow w;
w.setCentralWidget( new QWidget() );
w.centralWidget()->setStyleSheet("background-color: green");
QDockWidget* dock = new QDockWidget();
dock->setWidget( new QLabel("Hello World",dock) );
// make docking bar transparent!
dock->setAttribute(Qt::WA_TranslucentBackground);
w.addDockWidget(Qt::BottomDockWidgetArea,dock, Qt::Horizontal);
w.show();
return a.exec();
}
В пристыкованном состоянии это выглядит так:
В плавающем состоянии это выглядит так:
Вы можете увидеть центральный виджет (зеленый), его можно увидеть через стыковочную панель.
Ссылка: Сделать QWidget прозрачным