當Widget不夠大來顯示裡面的元件時,通常會使用Scroll Bar(捲軸),來調整我們要看到裡面元件的部分。
Qt已經有一個類別,它已經整合了Scroll bar,當裡面的元件超過外面可以顯示的大小時,會自動產生Scroll bar來讓使用者使用。
這裡要注意的是,QScrollArea裡面只能設定一個Main Widget(setWidget)
那如果要設定多個Widget的話呢?
1. 自定一個class是繼承QWidget,裡面就放置多個你要的Widget
2. 設定一個Widget,裡面有一個Layout去管理多個Widget
有空再各寫一個sample code
若要使用Layout必需要注意以下的文章「透過setGeometry設定相對於父類別的位置」
以下就是QScrollArea類別最簡單的例子:
main.cpp
#include <QApplication>
#include <QPushButton>
#include <QScrollArea>
int
main (
int argc,
char *argv[]
)
{
QApplication app (argc, argv);
//
// Create a QScrollArea for the main Widget
//
QScrollArea *ScrollArea = new QScrollArea;
ScrollArea->setWindowTitle ("QScrollArea");
//
// Create a QPushButton
//
QPushButton *Button = new QPushButton ("Hello World", ScrollArea);
Button->resize (350, 350);
//
// Set the PushButton for the main widget in the ScrollArea
//
ScrollArea->setWidget (Button);
ScrollArea->setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOn);
ScrollArea->setVerticalScrollBarPolicy (Qt::ScrollBarAlwaysOn);
ScrollArea->resize (200, 200);
ScrollArea->show ();
return app.exec ();
}
若QScrollBar裡面的Widget被Layout控制的話,則ScrollBar可能永遠不會出現~
因為是因為,裡面的Widget可能會被縮到最小,導致ScrollBar的Area仍然夠用,
當然就不會出現ScrollBar
參考資料:
Qt4 Gossip: QScrollArea
QScrollArea Class Reference
沒有留言:
張貼留言