gpt4 book ai didi

c++ - QGraphicsScene 中的小部件

转载 作者:行者123 更新时间:2023-11-30 01:22:20 26 4
gpt4 key购买 nike

我正在尝试将 QgraphicsView(QColorDialog) 小部件添加到 Palette 对话框中,但是 QGraphicsScene 对应于 QColorDialog 小部件总是空白,如果读者能帮助我纠正我的错误,那将是很大的帮助。

Qt-4.8.4-Linux(CentOS)

  1. 将包含在 PalletteDialog 中的 GraphicsView 小部件

    ClrWidget::ClrWidget(QWidget *parent) :
    QGraphicsView(parent)
    {
    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    setFrameStyle(QFrame::NoFrame);

    setScene(new QGraphicsScene(this));

    _dialog = new QColorDialog();
    _dialog->setOption(QColorDialog::NoButtons, true);
    setMinimumSize(_dialog->size());
    setMaximumSize(_dialog->size());

    QGraphicsProxyWidget *proxyWidget = new QGraphicsProxyWidget();
    proxyWidget->setWidget(_dialog);
    //scene()->addItem(proxyWidget);
    //scene()->setSceneRect(proxyWidget->geometry());

    scene()->addWidget(_dialog);
    scene()->setSceneRect(_dialog->geometry());
    }
  2. PaletteDialog 构造函数

    PaletteDialog::PaletteDialog(QWidget *parent)
    : QDialog(parent),
    ui(new Ui::PaletteDialog),
    {
    //PaletteDialog sets up the ClrWidget
    ui->setupUi(this);
    ...
    }

最佳答案

尝试这样的事情:

setScene(new QGraphicsScene);
QColorDialog *_dialog = new QColorDialog();
_dialog->setOption(QColorDialog::NoButtons, true);
_dialog->show();
QGraphicsProxyWidget *proxyWidget = scene()->addWidget(_dialog);

并删除这一行:

proxyWidget->setWidget(_dialog);

你做错的是将一个小部件设置为 QGraphicsProxyWidget 然后调用 QGraphicsScene::addWidget(..)它做同样的事情,但那是行不通的。您可以通过调用 QGraphicsScene::addItem() 将 QGraphicsProxyWidget 添加到场景中.

例子:

setScene(new QGraphicsScene(this));
QColorDialog *_dialog = new QColorDialog;
_dialog->setOption(QColorDialog::NoButtons, true);
QGraphicsProxyWidget *proxyWidget = new QGraphicsProxyWidget;
proxyWidget->setWidget(_dialog);
scene()->addItem(proxyWidget);

关于c++ - QGraphicsScene 中的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16542524/

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