QT的QScrollArea使用详解
有些時候,我們界面能展示的區域被限定的很小,但是需要展現的控件、內容卻很多,在限定大小的區域中無法全部顯示。這個時候就需要滾動條了。在Qt中有一個很好的類?QScrollArea。
有兩種方式可是實現滾動區域:
第一種直接用?Qt Designer?去設計ui文件:
拖入QScrollArea然后進行布局即可。
第二種是代碼實現:
QLabel *imageLabel = new QLabel(this);
QPixmap pixmap(":/Images/head");
pixmap = pixmap.scaled(200, 200, Qt::KeepAspectRatio); ?// 圖片縮放
imageLabel->setPixmap(pixmap);
imageLabel->setStyleSheet("background: white;"); ?// 標簽白色背景
imageLabel->setAlignment(Qt::AlignCenter); ?// 圖片居中
QScrollArea *scrollArea = new QScrollArea(this);
scrollArea->setBackgroundRole(QPalette::Dark); ?// 背景色
scrollArea->setWidget(imageLabel);
scrollArea->setAlignment(Qt::AlignCenter); ?// 居中對齊
?
scrollArea->widget()->resize(260, 260); ?// 手動調整大小
scrollArea->setWidgetResizable(true); ?// 自動調整大小
獲取與移除部件
獲取
可以通過widget()函數來獲取滾動區域的部件,如果沒有,則返回0。
QWidget *widget = scrollArea->widget(); QLabel *pLabel = qobject_cast<QLabel *>(widget);- ?
如果部件是一個QWidget的子類,可以用qobject_cast進行類型轉換。
移除
如果要將部件從滾動區域中移除(即:在上例中,滾動區域不再顯示圖片),使用takeWidget()函數。
QWidget *widget = scrollArea->takeWidget(); QLabel *pLabel = qobject_cast<QLabel *>(widget);- ?
移除的同時,會將部件的所有權傳遞到調用者,可以用QWidget來接收。
總結
以上是生活随笔為你收集整理的QT的QScrollArea使用详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java打开word文件名乱码怎么解决_
- 下一篇: vc写的工程源代码打包工具