QT的QScrollArea使用详解
有些時候,我們界面能展示的區(qū)域被限定的很小,但是需要展現(xiàn)的控件、內(nèi)容卻很多,在限定大小的區(qū)域中無法全部顯示。這個時候就需要滾動條了。在Qt中有一個很好的類?QScrollArea。
有兩種方式可是實現(xiàn)滾動區(qū)域:
第一種直接用?Qt Designer?去設計ui文件:
拖入QScrollArea然后進行布局即可。
第二種是代碼實現(xiàn):
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); ?// 手動調(diào)整大小
scrollArea->setWidgetResizable(true); ?// 自動調(diào)整大小
獲取與移除部件
獲取
可以通過widget()函數(shù)來獲取滾動區(qū)域的部件,如果沒有,則返回0。
QWidget *widget = scrollArea->widget(); QLabel *pLabel = qobject_cast<QLabel *>(widget);- ?
如果部件是一個QWidget的子類,可以用qobject_cast進行類型轉(zhuǎn)換。
移除
如果要將部件從滾動區(qū)域中移除(即:在上例中,滾動區(qū)域不再顯示圖片),使用takeWidget()函數(shù)。
QWidget *widget = scrollArea->takeWidget(); QLabel *pLabel = qobject_cast<QLabel *>(widget);- ?
移除的同時,會將部件的所有權(quán)傳遞到調(diào)用者,可以用QWidget來接收。
總結(jié)
以上是生活随笔為你收集整理的QT的QScrollArea使用详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java打开word文件名乱码怎么解决_
- 下一篇: vc写的工程源代码打包工具