설명 된 제목과 마찬가지로 헤더 (QHeaderView)가있는 QTreeView에서 스크롤 막대를 다시 그리지 만 스크롤 막대의 높이는 QTreeView의 전체 높이입니다. y 축에 QTreeView에서 스크롤 막대의 높이를 지정하는 방법
답변
당신의 문제에 대한 해결책은 QHeaderView
에서 취득한 constant_offset
값으로 세로 스크롤 막대의 위치를 설정 할 수 있습니다 (: 스크롤 바의 높이가 QTreeView의 높이를 뺀 아래의 그림과 같이 헤더의 height.just 동일).
이
는 서브 클래스에 의해 수행 될 수QTreeView
과 같이 :
class MyTreeView : public QTreeView
{
public:
MyTreeView(QWidget* parent = nullptr): QTreeView(parent){}
void updateVertScrollBar()
{
auto* ptr = verticalScrollBar();
QRect rect = ptr->geometry();
rect.setTop(header()->height());
ptr->setGeometry(rect);
}
void resizeEvent(QResizeEvent* ev) override
{
QTreeView::resizeEvent(ev);
updateVertScrollBar();
}
};
데이터가 가득하거나 샘플 구현에 제시된 업데이트가 각각 발생할 수 있습니다 직후 호출 할 수있는 sizePolicy
updateVertScrollBar
방법에 따라 resizeEvent
- 위젯에 수행되는 다양한 크기 조정을 포함해야합니다.
편집
또한 까다로운 일이 될 것이다 수축 된 스크롤에서 왼쪽 빈 공간을 제거. 먼저 QTreeView
이 뷰포트 위젯과 스크롤바 (다른 것들 중에서)로 만들어 졌다는 것을 나타냅니다. 이제 볼 수있는 문제는 뷰포트와 수직 스크롤 막대 너비 (보이는 경우)가 일치해야하며 내부적으로 계산된다는 사실에서 비롯됩니다.
필자는 이러한 구성 요소의 크기를 강제로 늘리려고 할 때 많은 일이 일어나기 때문에 까다 롭다고 말했습니다. 일부 업데이트는 내부에서 호출되며 일부는 이벤트 루프를 통해 호출됩니다. this을 확인하면 개념에 대한 자세한 정보를 얻을 수 있습니다. 유사한 접근법이 아마도 QTreeView
에 적용됩니다.
기본적으로 뷰포트 너비를 늘리는 것이 필요합니다. 이것은 아마도 resizeEvent
동안 완료되어야합니다. 그러나 viewport()->setGeometry()
과 같은 메소드를 호출하면 잘 끝나지 않을 수 있습니다. 루프에 걸릴 수 있습니다. 시도해보십시오 blockSignals
하지만 도움이 될지 모르겠습니다. 일반적으로 주어진 Qt
위젯의 내부를 엉망으로 만들고 싶다면 최소한 간단히 구현해야합니다.
- 1. ListView에서 가로 스크롤 막대의 높이를 얻는 방법
- 2. 스크롤 막대의 높이를 요소의 높이와 다르게 설정하십시오.
- 3. mozilla에서 스크롤 막대의 색상을 지정하는 방법은 무엇입니까?
- 4. iframe에서 스크롤 막대의 스타일을 지정하는 방법은 무엇입니까?
- 5. QTreeWidget/QTreeView에서 행 높이를 얻는 방법
- 6. Html/CSS/JavaScript에서 메신저의 스크롤 막대의 너비와 높이를 고정하는 방법
- 7. 웹 컨테이너에서 스크롤 막대의 위치를 사용자 지정하는 방법
- 8. 캔버스의 스크롤 막대의 크기를 결정하십시오.
- 9. iPhone에서 내비게이션 막대의 기본 높이를 변경하는 방법
- 10. 스크롤 막대의 스크롤 막대가 누락되었습니다.
- 11. 오버라이드 탭 막대의 높이를 변경
- 12. css - Android 브라우저 막대의 높이를 계산 하시겠습니까?
- 13. 스크롤 막대의 비정상적인 동작
- 14. 스크롤 막대의 스타일 지정
- 15. VB.NET : 스크롤 막대의 값
- 16. 스크롤 막대의 줄 CSS
- 17. 스크롤 막대의 활성 버튼
- 18. 스크롤 막대의 색상을 변경하십시오.
- 19. 스크롤 막대의 축소 크기를 줄이는 방법
- 20. ScrollViewer에서 세로 스크롤 막대의 너비를 결정합니다.
- 21. 스크롤 막대의 최대 스크롤 값 가져 오기
- 22. 플래시 스크롤 막대의 썸 그래픽 크기
- 23. 스크롤 막대의 수직 위치를 일정하게 가져 오기
- 24. 스크롤 막대의 HTML 예약 공간
- 25. 스크롤 막대의 슬라이더 크기 조절
- 26. 스크롤 막대의 스타일이 작동하지 않습니다.
- 27. JComboBox에서 스크롤 막대의 크기를 변경하십시오.
- 28. Qt에서 스크롤 막대의 화살표 제거하기
- 29. 스크롤 막대의 아래쪽 절반이 누락되었습니다.
- 30. CSS : 스크롤 막대의 오른쪽에있는 거터
이 작업을 수행 할 수 있지만 헤더 너비가 스크롤 막대 너비와 동일한 빈 간격이 있습니다. 어떻게 헤더에서 빈 간격을 제거 할 수 있습니까 ?? – Lomuto
겪고있는 것을 보여주는 이미지를 붙여 넣습니다. 스크롤 바 주위의 관심 영역만으로도 충분합니다. – Dusteh
[이처럼] (https://1drv.ms/i/s!AuRlDm0ORHE_hN4McM_n9FAw1_8S8w) – Lomuto