У меня возникла проблема с QScrollArea.QScrollArea удаляет пространство между содержимым области и полосой прокрутки.
В частности, я не могу найти правильное правило QSS для удаления пространства 3px между QSrollArea QFrame и QScroll.
Пространство, которое я хотел бы удалить, - это тот, который указан красной стрелкой на картинке. Я также добавил синюю границу к внутреннему QFrame QSrollArea, но, похоже, он заканчивается правильно.
Изображение можно найти здесь: http://i58.tinypic.com/2h71a2c.png
Я использую QT 4.8.5 на SP2 SLED 11 (под GNOME).
Мой QSS выглядит следующим образом:
QScrollArea {
background: transparent;
}
QScrollArea > QWidget > QWidget
{
background: transparent;
border: 1px solid black;
margin: 0px 0px 0px 0px;
}
QScrollBar:horizontal
{
border: 1px solid #999999;
background:white;
height:7px;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
}
QScrollBar::handle:horizontal {
background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0 rgb(32, 47, 130), stop: 0.5 rgb(32, 47, 130), stop:1 rgb(32, 47, 130));
min-width: 20px;
}
QScrollBar::add-line:horizontal {
background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0 rgb(32, 47, 130), stop: 0.5 rgb(32, 47, 130), stop:1 rgb(32, 47, 130));
height: 0px;
subcontrol-position: right;
subcontrol-origin: margin;
}
QScrollBar::sub-line:horizontal {
background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0 rgb(32, 47, 130), stop: 0.5 rgb(32, 47, 130), stop:1 rgb(32, 47, 130));
height: 0px;
subcontrol-position: left;
subcontrol-origin: margin;
}
Любые идеи?
Спасибо.
Это, по-видимому, дефект в самой Qt. См. Http://stackoverflow.com/a/11268557/266309 для решения (вам нужно подклассифицировать QScrollArea и переопределить метод setViewportMargins). – waldyrious