LINUX.ORG.RU

[Qt] QScrollArea


0

0

У меня есть узкий и высокий виджет, по которому я хочу прокручиваться в высоту, прокрутка в ширину не нужна. Для этой цели я сую виджет в QScrollArea, и устанавливаю setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOff) При создании окна QScrollArea Принимает ширину виджета, и вертикальная полоса прокрутки наползает на него. Можно ли стандартными срествами сделать, чтобы QScrollArea принимала такую ширину, чтобы вместить и виджет, и полосу прокрутки?

Костыльно, но можно попробовать получить ширину скроллбара с помощью QStyle::pixelMetric(QStyle::PM_ScrollBarExtent...)

mannaz ()

запихни свой виджет в layout, а layout - в QScrollArea

lester_dev ★★★★★ ()

чтобы QScrollArea принимала такую ширину, чтобы вместить и виджет, и полосу прокрутки?

Эта ширина берётся из QScrollArea::sizeHint(). Наследуй QScrollArea, и, как посоветовали, добавляй в sizeHint ширину скролла:

class CScrollArea : public QScrollArea {
public:
	QSize sizeHint() const {
		return QScrollArea::sizeHint() + QSize( style()->pixelMetric( QStyle::PM_ScrollBarExtent ), 0 );
	}
};

Но это без учёта того, что скролл может быть невидим.

summatus ()

я тоже боролся с этой фигнёй когда-то. обнови Qt, кажется это пофиксили.

name_no ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.