QGraphicsView奇怪地渲染其子小部件的子小部件
QGraphicsView rendering its sub widget's sub widget weirdly
我正在使用c++和Qt开发一个音乐/MIDI编辑器。
开发是顺利的,直到我遇到一个问题,QGraphicsView是奇怪的呈现与它的子小部件的子小部件。(哇,真让人困惑)
这是我用来添加我的子部件到QGraphicsView的代码
pianoPlain = new QawPianoPlain();
keyBoard = new QawPianoKeyBoard();
scene->addWidget(pianoPlain);
scene->addWidget(keyBoard);
keyBoard->setGeometry(0,0,100,540);
keyBoard->setKeyNum(36);
pianoPlain->setGeometry(100,0,500,540);
pianoPlain->setStriptNum(36);
代码是这样的:
piano -> keyBoard -> key
...............|-> pianoplom -> notestripe
pianoPlain和keyBoard是我从GraphicsView继承的类,key和noteStript都是从QWidget继承的。
下面是发生的事情的图片:https://drive.google.com/file/d/0BzYLJIsbhhuVZ0RMdzRqV01Cd2M/view?usp=sharing
这是一个普通键盘的图片,它直接放在MainWindow(左)和一个扭曲的键盘放在QGraphicsView(右)
(我在这张图片中禁用了返回/while键)https://drive.google.com/file/d/0BzYLJIsbhhuVSDFhSXRVM0dHWnM/view?usp=sharing
似乎无论何时pianoPlain和keyBoard被放置在QGtraphicsView中,它都会被拧。
有人知道发生了什么吗?我该如何解决这个问题?
Qt: 5.4.1
OS: KUubutu 15.04 AMD64
clang 3.6.0/GCC 4.9.2
我建议pianoPlain和keyBoard应该使用继承QGraphicsItem的类-例如QGraphicsPixmapItem或QGraphicsProxyWidget。
然后使用scene->addWidget()方法将这些添加到场景中。
场景本身应该是QGraphicsView的一部分。
例如:QGraphicsView *view = new QGraphicsView();
QGraphicsScene* scene = new QGraphicsScene(view);
view->setScene(scene_);
// No need to parent these
pianoPlain = new QawPianoPlain();
keyBoard = new QawPianoKeyBoard();
// This will work if QawPianoPlain and QawPianoKeyBoard inherit QWidget
QGraphicsProxyWidget* pianoProxy = scene_->addWidget(pianoPlain);
QGraphicsProxyWidget* keyBoardProxy = scene_->addWidget(keyBoard );
为任何转换/动画使用代理小部件
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 最小硬币更换问题(自上而下方法)
- Qt VTK交互风格的信号到小部件
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 使用递归的数组的最小值.这是怎么回事
- 为什么在浮点中从大到小会引入更多的误差
- 找到两对数字,使它们的乘积的绝对差最小化
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 最大和最小 1 C++函数
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 我可以做些什么来消除或最小化这种将提供相同功能和行为的代码重复
- 如何将部分流作为参数传递
- 如何在QT中的自定义视频小工具t上绘制矩形
- 在二维数组中查找最小值和最大值?
- 调整布局上的 QGraphicsView 小部件的大小
- 如何正确删除是中央小部件的Qgraphicsview对象
- C++ 创建小部件数组
- 为什么 QGraphicsView::update( const QRegion& ) 会导致整个小部件被更新?
- QGraphicsView奇怪地渲染其子小部件的子小部件