QScrollArea使用的小問題

2021-08-06 00:02:09 字數 815 閱讀 8126

好久沒有更新部落格啦啊啊啊。。。

最近在寫程式,因為需要把兩個qwidget嵌入到同乙個介面上並且兩個介面的滾動條互不干擾,所以用到了qscrollarea,有兩個介面都使用了同乙個qscrollarea,大概是這樣的:首先需要出現介面a,所以把widgeta嵌入到scrollarea上:

qscrollarea * area = new qscrollarea;

area->setwidget(widgeta);

之後按下按鈕或者鍵盤事件等等吧,需要隱藏介面a,顯示介面b,所以我就覺得理所當然的像糊牆一樣把widgetb貼上去就行了,像這樣:

area->setwidget(widgetb);
但是後來我又需要看到介面a了,怎麼辦呢,好辦,我加了乙個鍵盤事件,按下esc就可以看到a了,把a貼到牆上去就是了:

area->setwidget(widegta);
如此反覆a面b面隨意切換,就當我是個dj吧,哈哈。但是執行起來卻發現程式竟然斷了!!!,這不是鬧心嗎,後來查了一下網上,有人出現過類似的問題,原因就是第二次放上的時候,widgetb就會代替widgeta,widgeta就會被釋放成為野指標。原來如此,報紙再糊上一層,之前的那張就作廢了,好吧,糊之前加上一句:
area->takewidget();

就相當於把之前那張報紙取下來,留著以後再用,這樣再貼另外一張就沒有問題了。

希望遇到同樣問題的你看到我的小文章會解開你的疑惑,不客氣啦

Qt 設計師中使用QScrollArea控制項

在qtdesigner 拖乙個scroll area控制項到視窗中會生成 scrollarea 和 scrollareawidgetcontents 這兩個部件。其中 scrollareawidgetcontents 是 scrollarea 的子部件,它是個空的qwidget。我們把要實現滾動條效...

QScrollArea控制項的訊息分發攔截

qscrollarea控制項是乙個好東西。它裡面有乙個qwidget控制項。qwidget控制項的功能不必多說,和matplotlib連線就靠它。當qwidget控制項的大小超過了qscrollarea的大小之後,會有乙個可拖動的滾動條。可拖動的滾動條是可以接受滑鼠滾輪事件而向上向下滾動的。為了實現...

PyQt5的QScrollArea元件的用法

pyqt5的qscrollarea元件為一種控制項容器,它的的作用是可以容納更多的元件,如果元件過多會出現滾動條,滾動條會根據容器的大小與內部元件的大小變化。使用方法可以參考如下例項 import sys from pyqt5.qtwidgets import class test qwidget ...