我希望做的是有一个标准的 QMainWindow 类,其中包含菜单、工具栏以及布局中的各种小部件,其中一个是显示包含图形布局的图形小部件的图形视图。但是每当我将图形视图放入主窗口时,什么都不会显示。如果我使用包含 main() 函数内部布局的图形小部件创建图形视图,那么一切都是可见的。
作为测试,我使用了 Qt 基本图形布局示例中提供的工作代码,在 main 中创建了一个 QMainWindow 类,并将 QGraphicsScene、Window 和 QGraphicsView 创建移动到主窗口类。
我自己测试了主窗口类,并且像行编辑这样的小部件显示得很好。但是下面的代码,取自示例中的 main,在主窗口类中不再有效。
QGraphicsScene scene;
Window *window = new Window;
scene.addItem(window);
QGraphicsView view(&scene);
view.resize(600, 600);
view.show();
我只是得到一个空白区域。如果我不添加 Window 小部件,而是例如绘制一个椭圆,那么它是可见的。如果我添加一个带有背景颜色的普通 QGraphicsWidget,那么它也是可见的。只是当事物在图形小部件的布局内时,我什么也得不到。我一直在寻找答案,深入研究文档,甚至查看 Qt 源代码,看看我是否可以弄清楚我想要做的事情是否可能,但没有任何运气。
我的主窗口:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QGraphicsScene scene;
Window *window = new Window;
window->resize(600, 600);
scene.addItem(window);
QGraphicsView view(&scene);
view.resize(600, 600);
view.show();
setCentralWidget(&view);
resize(600,600);
}
主要代码:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow w;
w.show();
return app.exec();
}