我有一个QWidget,我有一些简单的控件,比如Button,ProgressBar,TextEdit等......在QML中完成,我从QML示例中获取。我正在阅读http://doc.qt.io/archives/qt-4.7/qtbinding.html和http://doc.qt.io/archives/qt-4.7/qml-integration.html 目前我正在尝试QDeclarativeView。
setAttribute(Qt::WA_TranslucentBackground);
layout = new QVBoxLayout(this);
QDeclarativeView* btnView = new QDeclarativeView;
btnView->setSource(QUrl::fromLocalFile("Button.qml"));
QObject* btnObj = btnView->rootObject();
btnObj->setProperty("width", 140);
btnObj->setProperty("height", 32);
btnObj->setProperty("text", "Close");
//progressBar = new QProgressBar(this);
button = new QPushButton("Click", this);
//layout->addWidget(progressBar);
layout->addWidget(button);
btnView->setGeometry(0, 0, 140, 32);
btnView->setBaseSize(140, 32);
layout->addWidget(btnView);
setLayout(layout);
为什么我的btnView占用了这么多空间?它也是(QDeclarativeView)一个好方法吗?还是存在更好的解决方案?
使用QDeclarativeComponent时,我得到一个QObject。但不是QWidget。这是一个很好的解决方案吗?什么是在传统QWidget中获得利润丰厚的简单小部件的最佳解决方案?
答案 0 :(得分:0)
你没有告诉布局如何调整小部件的大小。因此它会在所有子节点之间平均分配空间,在这种情况下因为它只有1个子节点,所以QDeclarativeView会占用整个空间。使用QLayout :: setSizePolicy()和QWidget :: setMaximumWidth()/ QWidget :: setMaximumHeight()根据您的意愿调整大小。您还可以使用QLayout :: addSpacing();
QDeclarativeView是向QWidgets添加新UI元素的一种不错的方式。但它比使用QWidgets本身要慢。