2010-08-02 164 views
2

我瞭解如何將scrollArea添加到特定的窗口小部件。然而,在我的情況下,Qwidget有多個子部件,而這些都是使用QVBoxLayout設置的。現在我怎麼能在這種情況下添加一個滾動條?這裏QWidget不是中間部件,它是TabWidget的其中一個頁面。我的代碼如下所示:如何向父級添加滾動條QWidget

QTabWIdget *center = new QTabWidget; setCentralWIdget(center); 

xTab = new QWidget; 

formLayout = new QFormLayout; formLayout->addWidget(...); formLayout->addWidget(...); formLayout->addWidget(...); formLayout->addWidget(...); 

xTab->setLayout(formLayout); 

現在如何將scrollBar設置爲xTab?我試過使用

scrollArea = new QScrollArea; 
scrollArea->setWidget(xTab); 

但是,這是行不通的。

任何想法/建議是有益的和讚賞。

+0

應該滾動什麼?整個標籤小部件或只是一個標籤的內容?你有沒有嘗試在Qt Designer中創建你的UI? – andref 2010-08-03 19:12:30

+0

我只想讓標籤小部件的內容滾動。 我沒有爲我的應用程序使用Qt設計器,但是我嘗試了一個帶有Qt設計器的示例程序,其中添加了一個垂直滾動條。結果是它添加了滾動條,但不滾動內容。 – user408307 2010-08-05 04:27:30

回答

2

您是否嘗試過使用QScrollArea作爲標籤頁?

scroll=new QScrollArea(mainWindow->centralWidget); 
scroll->setGeometry(mainWindow->tabWidget->geometry()); 
scroll->setWidget(mainWindow->tabWidget); 
scroll->show(); 

的QScrollArea定義了滾動部件會出現:

QTabWIdget *center = new QTabWidget; setCentralWIdget(center); 

xTab = new QScrollArea; 
formLayout = new QFormLayout; formLay.... 
xTab->setLayout(formLayout); 
center->addTab(xTab, "XXX Tab"); 
+0

我也是這樣試過的。但是在這種情況下,它調整了小部件的大小。 在這個選項卡中,我有一個textBrowser,而不是啓用scrollBar滾動內容,TextBrowser的調整非常像一個lineEdit,並且所有的小部件都在可用空間中進行了調整。 – user408307 2010-08-05 04:48:42

+0

我專門設置了xTab-> setWidgetResizable(false) - 即使它是默認的。即使這沒有幫助。 另外,我想知道這種方式和setWidget(xTab)功能不一樣。 – user408307 2010-08-05 04:55:23

+1

默認情況下,大多數小部件的大小策略都設置爲QSizePolicy :: Preferred,這意味着小部件可以展開,但這樣做沒有優勢。您可能需要設置子窗口小部件的最小大小限制,以確保其可用性 – 2010-08-05 08:46:29

0

我使用下列獲得了成功。如果父項爲0,則它​​是非模態窗口。 setGeometry將QScrollArea實例設置爲所需的尺寸(該選項卡的尺寸)。 setWidget定義了QScrollArea實際上將滾動的小部件。