QTabWidget увеличивает ширину кнопки стрелки прокрутки вкладок - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть QTabWidget со слишком большим количеством вкладок

, и они переполняются стрелками прокрутки.Я хочу увеличить ширину стрелок прокрутки более чем в два раза по сравнению с шириной по умолчанию, чтобы их было проще использовать на сенсорном экране.

Существует Пример QTabWidget StyleSheet , но я не могу показатьсязаставить его работать хорошо.Приведенная ниже таблица стилей создает этот скриншот

QTabBar::scroller { /* the width of the scroll buttons */
    width: 40px;
}

QTabBar QToolButton { /* the scroll buttons are tool buttons */
    width: 15px;
    border-width: 2px;
}

, где я хотел бы что-то похожее на этот скриншот, который я отредактировал.

1 Ответ

0 голосов
/ 11 марта 2019

Метод № 1: Кажется, это ошибка, простая и понятная.Фон кнопок прозрачный;но установка его на белый цвет с помощью таблицы стилей и установка ширины тоже не работают правильно.

Я смог решить проблему с помощью таблицы стилей таким образом:

QTabBar::scroller {width: 0px;}

Еслиэто не работает: избавиться от этого.Затем я создал две кнопки, чтобы прокрутить его вправо, и выложил виджет вкладки и кнопки горизонтально.Я установил отступы вертикальных и горизонтальных макетов на ноль.Я пометил кнопки «<» и «>», но вы можете сделать это более интересным, если хотите.Если вы хотите, чтобы область вкладок под полосой прокрутки имела ту же ширину, что и панель вкладок и кнопки, вам нужны два виджета вкладок:

               QTabWidget1    Button1    Button2

                         Wider QTabwidget2

Затем вы устанавливаете высоту QTabWidget1, чтобы только вкладкипоказать и установить высоту панели вкладок QTabWidget2 в 0 с помощью таблицы стилей:

QTabBar::tab {height: 0px;}

, чтобы отображались только тела вкладок;а не сами вкладки.

Поскольку они недостаточно продуманны, чтобы представить метод прокрутки для панели вкладок, вы можете обмануть его, просто изменив активную вкладку с помощью setCurrentIndex ();и он останется в поле зрения.

Затем вы можете активировать или деактивировать кнопки <и> в зависимости от того, активна ли первая или последняя вкладка.Я не утруждаю их ни скрытием, ни отключением, так как мое приложение в основном рассчитано и немного отшлифовано.

Да, это PITA.Если нет лучшего пути, просто закодируйте его.Если жизнь подарит вам лимон, сделайте лимонные бомбы и покажите, кто в доме хозяин.(На самом деле, почти всегда только в переносном смысле.) Я отправлю сообщение об ошибке на днях, когда у меня будет время.

Может быть, есть магические свойства, которые могут заставить эти кнопки иметь нормальный фони размеры;но я их не знаю.

Редактировать: Метод # 2: Решил мою проблему, но не будет OP (для тех, кто испытывает ту же проблему. Я пришел сюда из-за этой проблемы, когда я не пыталсядля изменения стиля этих кнопок. Это известная ошибка при использовании таблицы стилей, которую QTabBar имеет или наследует: "При добавлении таблицы стилей на вкладки кнопки со стрелками прокрутки навигации становятся прозрачными" . (Проголосуйте за этопроблема, и это будет исправлено быстрее.) Простое обходиться без таблицы стилей решило мою проблему. Моя была в родительской форме, и удалив ее и применив к элементу, который я хотел стилизовать, исправил его.

Метод № 3: Вы можете попытаться установить такие свойства, как ширина кнопки, используя свойства таблицы стилей, пока она не будет исправлена, хотя я считаю, что это будет означать создание подклассов QTabWidget и QTabBar для доступа к свойствам QToolButton. Звучит хуже, чем есть.может выполнить это с помощью примерно десятка строк кода в заголовке, хотя, если вы используете Qt Creator в Design tab или Designer, вам нужно продвигать виджет вкладки.

...