[英]The size of a QWidget is limited. How can I change it?
我想使用Visual Studio 2013在C ++中構建Qt5.2應用程序。我應用QWidget::resize
函數將上圖中的QWidget對象的大小設置為1200 * 800。 但是似乎QWidget對象不能那么大(有垂直和水平滾動條)。
我如何才能將QWidget對象的大小擴展到1200 * 800,並刪除滾動條? 以及如何在垂直和水平方向上將對象放在應用程序的中心?
您需要提供一個最小的例子。 我們不必猜測。
我最多只能看到三個小部件:頂層一個, QScrollArea
,以及滾動區域內的任何小部件。 如果是這種情況,則滾動區域不受布局管理,並且當您調整頂級窗口小部件的大小時,滾動區域的大小將保持不變。
我看到了兩種解決方案,假設MyContentsWidget
是繪制遺傳學信息的小部件(如果是這樣的話)。
擺脫頂層小部件,並使用QScrollArea
作為頂層小部件:
int main(int argc, char ** argv) { QApplication app(argc, argv); QScrollArea area; MyContentsWidget contents; area.setWidget(&contents); area.show(); return app.exec(); }
將布局添加到頂層小部件,以便適當調整滾動區域的大小:
class MyWindow : public QWidget { QGridLayout m_layout; QScrollArea m_area; MyContentsWidget m_contents; public: MyWindow(QWidget * parent = 0) : QWidget(parent), m_layout(this) { m_layout.addWidget(&m_area, 0, 0); m_area.setWidget(&m_contents); } };
在這兩種情況下,聲明的順序都與破壞的順序相反,這很重要,因為必須確保MyContentsWidget
在滾動區域之前被破壞。
將小部件添加到QLayout中:
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(widget);
mainWindow->setLayout(layout);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.