[問題][QT] 如何阻止QLabel重疊?
網路上查都是詢問如何讓元件重疊...
我的程式是要做動態載入圖片
就像網路的線上看漫畫那樣,還沒看到的圖片先別載入
等scrollBar滑到了再來載入
程式初期會去讀取這個漫畫有n頁
便會生成n個QLabel插入QScrollArea 裡的 QGridLayout (使用VBoxLayout仍是會重疊)
然後我有一個按鈕
按下去之後會根據當下視窗的寬度
對每個QLabel setFixSize(newSize);
以及裏頭的pixmap進行 QPixmap newPix = pixmap->scaled(
newSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
把每個QLabel以及裡面的pixmap拉成與視窗同寬
這時候我發現我後面讀取載入的圖,會重疊較早讀取的圖
原本我以為是我的newSize計算錯誤
但花了一段時間debug發現我的newSize是正確的
然後也測試sizePolicy,無論是否設定為Fixed,QLabel都會重疊
最神奇的地方是: 當我把視窗的寬縮小到一定的程度
這些QLabel竟然就不會重疊,達成了我一開始想要的效果了!!!
但只要視窗的寬超過一定的程度,QLabel裡的圖就會重疊
而且視窗的寬越大,重疊的部分也就越大。
想請問我到底哪邊出的問題....
以下是部分原始碼
https://pastebin.com/zLZ0kSaf
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.225.144 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1616744598.A.C18.html
推
03/26 21:48,
3年前
, 1F
03/26 21:48, 1F
我剛剛測試了一下,如果QScrollArea裡塞的QLabel低於大約222個的情況下進行同寬縮放
則每一張圖都有當初設定的縫隙(spacing(5))
超過大約222個QLabel的情況下進行同寬縮放
就會產生我說的重疊情況
除此之外
如果在QLabel超過222個的同寬縮放情況下
橫的圖片 (水平較寬的圖片)與橫的圖片之間並不會出現重疊
但是直的(垂直較高的圖片)與直的圖片、或是直的與橫的圖片之間會產生重疊。
以上是目前新的發現
※ 編輯: liu2007 (123.192.225.144 臺灣), 03/26/2021 22:47:47
※ 編輯: liu2007 (123.192.225.144 臺灣), 03/26/2021 22:48:39
→
03/26 22:51,
3年前
, 2F
03/26 22:51, 2F
→
03/26 22:58,
3年前
, 3F
03/26 22:58, 3F
→
03/26 22:58,
3年前
, 4F
03/26 22:58, 4F
→
03/26 23:09,
3年前
, 5F
03/26 23:09, 5F
是的!! 我剛剛有發現到。
我剛剛測試不同尺寸的視窗下的同寬縮放
QScrollArea 的Layout (GridLayout) 的Size高度都是一樣
QSize(1767, 524305)
QSize(1763, 524305)
QSize(2315, 524305)
我看一下能不能解除@@
※ 編輯: liu2007 (123.192.225.144 臺灣), 03/26/2021 23:28:10
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章