所以我想创建一个看起来像这样的应用程序:
此应用程序的作用是,我可以通过左侧的组合框选择形状,然后将其放在右侧的“区域”中。使用滑块,我可以改变大小。复选框选择边框或使形状具有填充颜色。
我的问题是我想使用QML创建这些形状,因为用矩形,圆形等创建基本形状相对容易,但是我也想在左侧看到漂亮的界面。仅QML能做到吗?还是需要将QML集成到qtwidgets或类似的东西中?我知道QML中也有一个滑块和一个按钮,看起来很不错,但是我想在右边有一个空白区域,向用户指示他可以在左边创建形状和ui的地方。这里正确的方法是什么?
答案 0 :(得分:0)
我强烈建议对整个UI使用QML。首先,Qt Quick和QWidgets是完全不同的UI引擎。我发现基于标记的UI更易于进行源代码控制,调整和一般使用。此外,Qt Quick和QML是我使用过的最好的UI框架,并且有很多。您可以轻松地做所有您想做的事。
答案 1 :(得分:0)
对于您应用的绘图部分,使用QGraphicsScene
https://doc.qt.io/qt-5/qgraphicsscene.html也可能是Qt Widget的替代方案,而不是将其与QML混合使用。
但是,如果您想坚持使用QML,可以看看QQuickView
https://doc.qt.io/qt-5/qquickview.html,这是集成的一个小例子:
#include <QQuickView>
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// ..
QQuickView *view = new QQuickView;
QWidget *container = QWidget::createWindowContainer(view, this);
// some set up if needed
container->setMinimumSize(1280, 600);
container->setMaximumSize(1280, 600);
container->setFocusPolicy(Qt::TabFocus);
// ..
view->setSource(QUrl("main.qml"));
view->setResizeMode(QQuickView::SizeViewToRootObject);
ui->verticalLayout->addWidget(container);
// ..
}