我一直在尝试将按钮添加到未停靠的 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/