gpt4 book ai didi

c++ - Qt - 制作一个与 QGraphicsView 重叠的面板

转载 作者:行者123 更新时间:2023-11-30 04:51:26 25 4
gpt4 key购买 nike

我正在尝试制作一个显示一些数据的面板,当我按下一个按钮时,这些数据就会被添加。我将通过这些图片解释它:

这将是应用程序的初始状态,一个带有 QGraphicsView 的窗口 This would be the initial state of the app

如果我单击“帮助”,它应该会在其上方显示一个永不失焦的窗口 enter image description here

我研究过使用 QDockWidget,但这只是在它旁边创建了一个面板,这不是我想要的。如果有人知道如何做到这一点,我将不胜感激,谢谢。

最佳答案

您可以在 QGraphicsView 中设置子部件并将其视为常规 QWidget:

    QApplication app(argc, argv);
QGraphicsScene* scene = new QGraphicsScene(0, 0, 1000, 1000);
QGraphicsView* view = new QGraphicsView(scene);
view->show();

QPushButton* button = new QPushButton("Show label");
QLabel* label = new QLabel("Foobar");
QVBoxLayout* layout = new QVBoxLayout(view);
layout->setAlignment(Qt::AlignRight | Qt::AlignTop);
layout->addWidget(button);
layout->addWidget(label);
label->hide();
QObject::connect(button, &QPushButton::clicked, label, &QLabel::show);
return app.exec();

当您单击按钮时,标签将在 QGraphicsView 中可见。

您还可以使用 QGraphicsProxyWidget 类在您的场景中嵌入一个小部件:

    QApplication app(argc, argv);
QGraphicsScene* scene = new QGraphicsScene(0, 0, 1000, 1000);
scene->addItem(new QGraphicsRectItem(500, 500, 50, 50));
QGraphicsView* view = new QGraphicsView(scene);
view->show();

QWidget* w = new QWidget();
QGraphicsProxyWidget* proxy = new QGraphicsProxyWidget();


QPushButton* button = new QPushButton("Show label");
QLabel* label = new QLabel("Foobar");
QVBoxLayout* layout = new QVBoxLayout(w);
layout->addWidget(button);
layout->addWidget(label);
layout->setAlignment(Qt::AlignRight | Qt::AlignTop);
label->hide();
QObject::connect(button, &QPushButton::clicked, label, &QLabel::show);

proxy->setWidget(w);
scene->addItem(proxy);
return app.exec();

关于c++ - Qt - 制作一个与 QGraphicsView 重叠的面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54802254/

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