QML-виджеты в QWidget - PullRequest
       6

QML-виджеты в QWidget

1 голос
/ 06 июля 2011

У меня есть 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);

Screenshot Почему мой btnView занимает столько места?а также это (QDeclarativeView) хороший способ сделать?или существует еще лучшее решение?

При использовании QDeclarativeComponent я получаю QObject.Но не QWidget.и это даже хорошее решение?Какое лучшее решение иметь выгодные простые виджеты в традиционном QWidget?

1 Ответ

0 голосов
/ 07 июля 2011

Вы не сказали макету, как определить размер виджетов. Таким образом, он разделит пространство поровну между всеми своими дочерними элементами, в этом случае, поскольку у него есть только 1 дочерний элемент, QDeclarativeView занимает все пространство. Используйте QLayout :: setSizePolicy () и QWidget :: setMaximumWidth () / QWidget :: setMaximumHeight () для изменения размера в соответствии с вашими пожеланиями. Вы также можете использовать QLayout :: addSpacing ();

QDeclarativeView - это достойный способ добавления новых элементов пользовательского интерфейса в QWidgets. Но это медленнее, чем использование самих QWidgets.

...