c++ - QGraphicsScene 中的小部件

标签 c++ qt qt4

我正在尝试将 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/

相关文章:

c++ - QSqlQuery 将 QByteArray 作为字符串插入 PostgreSQL

c++ - Qt 中的单实例应用程序

qt - QImage/QPixmap 大小限制?

c++ - QGraphicsView 子类和事件

c++ - 为什么带有花括号初始化器列表的构造函数/虚拟析构函数不起作用?

c++ - 用于渲染 3d 球体的纹理坐标

c++ - 给定二叉树是否为二叉搜索树

python - 加载了错误的 Mac OS X 框架

c++ - Qt4:在操作 QGraphicsItem 时将鼠标光标锁定到位

C++:从模板参数继承