2011-07-06 21 views
0

私はQWidgetを持っており、Button、ProgressBar、TextEditなどのSimples Controlをいくつか持っています。QMLの例から取り上げたQMLで行われました。私はQDeclarativeViewを試している時点でhttp://doc.qt.io/archives/qt-4.7/qtbinding.htmlhttp://doc.qt.io/archives/qt-4.7/qml-integration.html を読んでいました。QWidgetのQMLウィジェット

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で収益性の高いシンプルなウィジェットを持つベストソリューションは何ですか?

答えて

0

ウィジェットのサイズを決める方法を教えてくれませんでした。そのため、すべての子要素の間で均等に領域を分割します。この場合、子要素が1つしかないため、QDeclarativeViewは領域全体を占有します。あなたの望む通りにサイズを変更するにはQLayout :: setSizePolicy()とQWidget :: setMaximumWidth()/ QWidget :: setMaximumHeight()を使います。 QLayout :: addSpacing()を使用することもできます。

QDeclarativeViewは、QWidgetsに新しいUI要素を追加するうまい方法です。しかし、QWidgets自体を使用するよりも時間がかかります。