【发布时间】:2015-08-26 01:59:34
【问题描述】:
我正在使用 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);
代码是这样的。
钢琴卷 -> 键盘 -> 键
.............|-> 钢琴曲-> noteStript
其中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
操作系统:KUubutu 15.04 AMD64
编译器:clang 3.6.0/ GCC 4.9.2
【问题讨论】:
-
澄清一下,您是否将
QGraphicsView小部件作为项目添加到QGraphicsScene!? -
是的,我将小部件添加到场景中。 (既然有 addWidget,为什么不呢?)这就是事情出错的原因吗?
-
场景无法正确容纳渲染的项目,或者子小部件的代码可能存在错误。我建议创建一个示例子小部件并将其添加到场景中,以测试是您的场景布局有问题还是您的子小部件有问题。
-
经过一些测试。我不认为这是我的小部件的问题。如果将 QPushButton 放置在 QGraphicsView 的孙小部件中,即使 QPushButton 也无法正确呈现。 link to picture 可以看到,Button 2 没有渲染
标签: c++ qt user-interface