簡體   English   中英

QWidget的大小是有限的。 我該如何更改?

[英]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是繪制遺傳學信息的小部件(如果是這樣的話)。

  1. 擺脫頂層小部件,並使用QScrollArea作為頂層小部件:

     int main(int argc, char ** argv) { QApplication app(argc, argv); QScrollArea area; MyContentsWidget contents; area.setWidget(&contents); area.show(); return app.exec(); } 
  2. 將布局添加到頂層小部件,以便適當調整滾動區域的大小:

     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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM