c++ - 最大化和最小化未停靠的 QDockWidget 中的按钮

标签 c++ qt qt5 qdockwidget

我一直在尝试将按钮添加到未停靠的 QDockWidget 窗口,就像我通常为 QDialog 所做的那样,但没有成功,如下所示:

QDockWidget* dw = new QDockWidget(QString("Stream %1").arg(i + 1), this); 
dw->setWindowFlags((dw->windowFlags() | Qt::WindowMaximizeButtonHint |
    Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint));

当我取消停靠它们时,它们仍然只有 [X] 关闭按钮。

我错过了什么?

开发环境信息: Windows 10 x64, Visual Studio 2015, Qt 5.7.1, C++语言

最佳答案

我知道怎么做了。您必须连接到 QDockWidget toplevelChanged(bool) 信号。

connect(ui.dockWidget, SIGNAL(topLevelChanged(bool)), this, SLOT(dockWidget_topLevelChanged(bool)));

然后你需要检查它是否 float 并设置窗口提示。

void MyClass::dockWidget_topLevelChanged(bool)
{
    QDockWidget* dw = static_cast<QDockWidget*>(QObject::sender());
    if (dw->isFloating())
    {
        dw->setWindowFlags(Qt::CustomizeWindowHint |
            Qt::Window | Qt::WindowMinimizeButtonHint |
            Qt::WindowMaximizeButtonHint |
            Qt::WindowCloseButtonHint);
        dw->show();
    }
}

关于c++ - 最大化和最小化未停靠的 QDockWidget 中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50531257/

相关文章:

c++ - 如何在避免 char 行为的同时将 uint8_t 与 I/O 流一起使用?

c++ - 比较两个 C 风格字符串的 C++ For 循环的效率和可读性

c++ - 实现 OpenSceneGraph 时在 Qt 中获取引用问题

windows - 隐藏 Windows 应用程序的控制台

Qt动画闪烁

c++ - 防止显示器开机

c++ - Boost 1.59.0 如何清理项目?

c++ - 如何确定何时位于 QListView 的底部/末尾?

c++ - C2440 : '=' : cannot convert from 'const char [9]' to 'char*'

c++ - QObject::connect: 无法连接 (null)::mySignal() 到 (null)::mySlot()