gpt4 book ai didi

c++ - QDockWidgets 合并不正确

转载 作者:行者123 更新时间:2023-11-28 05:41:36 26 4
gpt4 key购买 nike

我有一个 QDockWidget 类和一个 QMainWindow:

// docker.hpp
class Docker : public QDockWidget
{
Q_OBJECT
public:
Docker(QString title, QWidget* parent = 0);
}

// docker.cpp
Docker::Docker(QString title, QWidget* parent): QDockWidget(title, parent)
{
QWidget* widget = new QWidget(this);
widget.setMinimumSize(200, 200);
setWidget(widget);
widget->setStyleSheet("border:5px solid gray;");

setAllowedAreas(Qt::AllDockWidgetAreas);
}

// mainwindow.hpp
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget* parent);
private slots:
void createDockers();
};

// mainwindow.cpp
MainWindow::MainWindow(QWidget* parent): QMainWindow(parent)
{
setDockOptions(dockOptions() |
QMainWindow::AllowTabbedDocks |
QMainWindow::GroupedDragging);

// The following line of code does not change the situation.
// setTabPosition(Qt::RightDockWidgetArea, QTabWidget::East);

// There are some other codes which connect a button to the void createDockers() method
}

void createDockers()
{
Docker* dock = new Docker("Docker", this);
dock->setFloating(true);
dock->show();
}

我可以通过点击上面提到的按钮来创建两个 DockerTwo QDockWidgets

但是,当我将一个 QDockWidget 拖到另一个上时,边框消失并且没有标签显示: Merges QDockWidgets

我期望发生以下情况:(通过生成多个 QDockWidget 实现) Expected behaviour我还注意到其中一个 QDockWidget 没有消失。相反,它合并回 MainWindow。只有当它们是“前两个”QDockWidget时才会发生这种情况。

是什么导致了这个问题,如何解决?我正在尝试模仿 this project .

最佳答案

我猜它与 QMainWindow::GroupedDragging 选项有关。我很确定没有它它也能正常工作(我的意思是不显示标签的问题)。您对其他地方的码头位置有限制吗?文档暗示它可能会产生问题:http://doc.qt.io/qt-5/qmainwindow.html#DockOption-enum

对于样式问题,你可能需要在tab事件上重新定义它,因为一旦tab了,widget可能会继承tab样式,而不是你定义的dock widget样式(完全没有认证^^)

最后的猜测/您可以尝试的事情是,从选项卡式停靠栏开始,而不是 float ,看看您是否有任何新的行为,这是我在之前的项目中所做的,并且效果很好。

抱歉,暂时没有其他想法。

关于c++ - QDockWidgets 合并不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36973427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com