QDockWidget 的使用

构造函数中调用如下

    // 创建可停靠窗口1
//    createDockWidget("窗口1", "这是可停靠窗口1", Qt::RightDockWidgetArea);
//    createDockWidget("窗口3", "这是可停靠窗口3", Qt::RightDockWidgetArea);
    // 创建可停靠窗口2
//    createDockWidget("窗口2", "这是可停靠窗口2", Qt::LeftDockWidgetArea);
    // 允许所有停靠区域
    setDockOptions(QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks);

相关函数

void WorkWindow::createDockWidget(const QString &title, const QString &content, Qt::DockWidgetArea area) {
    QDockWidget *dock = new QDockWidget(title, this);
    dock->setAttribute(Qt::WA_DeleteOnClose);//设置点击关闭按钮,即释放当前dock
    QTextEdit *textEdit = new QTextEdit(dock);
    textEdit->setText(content);
    dock->setWidget(textEdit);
    // 设置可浮动
    dock->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable);
    addDockWidget(area, dock);// 添加到主窗口
}

qss美化
原文链接:https://blog.csdn.net/wzs250969969/article/details/78466143

QDockWidget {
    border: 1px solid red;
    titlebar-close-icon: url(:/images/111.bmp);
    titlebar-normal-icon: url(:/images/close.png);
}

/* 标题设置 */
QDockWidget::title {
    text-align: right;
    background: lightgray;
    padding-left: 35px;
}

/* 关闭和显示按钮 */
QDockWidget::close-button, QDockWidget::float-button {
    border: 2px solid transparent;
    background: darkgray;
    padding: 2px;
    icon-size: 14px; /* maximum icon size */
}

/* 鼠标悬浮状态 */
QDockWidget::close-button:hover, QDockWidget::float-button:hover {
    background: red;
}

/* 鼠标按下状态 */
QDockWidget::close-button:pressed, QDockWidget::float-button:pressed {
    padding: 1px -1px -1px 1px;
}

/* 把按钮移到左上角 */
QDockWidget::close-button {
    subcontrol-position: top left;
    subcontrol-origin: margin;
    position: absolute;
    top: 0px; left: 0px; bottom: 0px;
    width: 14px;
}

QDockWidget::float-button {
    subcontrol-position: top left;
    subcontrol-origin: margin;
    position: absolute;
    top: 0px; left: 16px; bottom: 0px;
    width: 14px;
}
posted @ 2025-04-23 17:12  小城熊儿  阅读(28)  评论(0)    收藏  举报