Как установить QToolButton для заполнения боковой панели (QDockWidget) в Qt?

Я написал минимальный пример с боковой панелью, на которой есть QToolButton. Я установил setAutoRaise(true) для QToolButton, поэтому при наведении на него кнопка поднимается. Но на данный момент у меня есть небольшая проблема. Как видно на картинке ниже, при наведении на кнопку граница справа и слева не полностью занимает весь экран.
Вот как это выглядит:
введите здесь описание изображения

И этот пример того, как я хочу, чтобы кнопка выглядела так:
введите здесь описание изображения

И вот мой код:

sidebarDock = new QDockWidget(this);
addDockWidget(Qt::LeftDockWidgetArea, sidebarDock);

//hide dock widget title bar
QWidget *titleBarWidget = new QWidget(sidebarDock);
sidebarDock->setTitleBarWidget(titleBarWidget);
sidebarDock->titleBarWidget()->hide();

dockWidget = new QWidget(sidebarDock);
dockWidget->setObjectName("DockWidget");
dockWidget->setStyleSheet("#DockWidget { background-color: #F7DC6F; }");
dockVLayout = new QVBoxLayout(dockWidget);
overviewBtn = new QToolButton(dockWidget);
overviewBtn->setAutoRaise(true);
overviewBtn->setIcon(QIcon(":/Icons/overview.png"));
overviewBtn->setText("Overview");
overviewBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
dockVLayout->addWidget(overviewBtn);
dockWidget->setLayout(dockVLayout);
sidebarDock->setWidget(dockWidget);

Итак, может ли кто-нибудь сказать мне, какую часть я пропустил, чтобы установить правую и левую границу QQToolButton полностью в сторону? Или есть лучшие способы добиться этого? Спасибо.


person Theodore Tang    schedule 10.05.2018    source источник
comment
Возможно, вам нужно 1. Удалить поля, 2. Увеличить изображение.   -  person Serhiy    schedule 10.05.2018
comment
@Serhiy 1. Я попытался установить для кнопки и поля макета значение 0 с помощью setContentsMargins(0, 0, 0, 0), оно остается прежним; 2. Я попытался использовать изображение большего размера, но поля все еще есть. Есть ли другие способы?   -  person Theodore Tang    schedule 10.05.2018


Ответы (1)


Теперь я решил эту проблему.
Просто нужно добавить одну строку во фрагмент кода, чтобы установить для поля макета значение 0, используя: dockVLayout->setMargin(0)

person Theodore Tang    schedule 10.05.2018