QPushButton Не использовать смещение текста на кнопку проверено

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

Вот кнопка в двух состояниях. При наложении или просмотре одного за другим в средстве просмотра изображений вы можете увидеть смещение текста.

введите описание изображения здесь

введите описание изображения здесь

Вот соответствующий код:

#include "ModeButton.h"
// The RGB colour codes that we use to help create our dynamic stylesheets. Longer term the colour codes may be moved to a global colour file
const QString ModeButton::m_rgbModeButtonEnabledBorder     = QString("rgb(102, 102, 102)");
const QString ModeButton::m_rgbModeButtonEnabledBackground = QString("rgb(153, 153, 153)");
const QString ModeButton::m_rgbModeButtonEnabledText       = QString("rgb(102, 102, 102)");
const QString ModeButton::m_rgbModeButtonDisabledBorder    = QString("rgb(82, 82, 82)");
const QString ModeButton::m_rgbModeButtonDisabledText      = QString("rgb(82, 82, 82)");
const QString ModeButton::m_rgbModeButtonCheckedText       = QString("rgb(0, 0, 0)");
const QString ModeButton::m_rgbModeButtonCheckedBackGround = QString("rgb(255, 153, 51)");

// We dynamically create our stylesheets so that we can separate out the colour from the rest of the styling
const QString ModeButton::m_styleSheetEnabledTemplate  = QString("QPushButton { color: TEXT_RGB; border: 0px solid BORDER_RGB; border-radius: 7px; background-color: BACKGROUND_RGB; }");
const QString ModeButton::m_styleSheetDisabledTemplate = QString("QPushButton:disabled { border: 0px solid BORDER_RGB; color: TEXT_RGB; }");
const QString ModeButton::m_styleSheetCheckedTemplate  = QString("QPushButton:checked { color: TEXT_RGB; border: 0px solid BORDER_RGB; border-radius: 7px; background-color: BACKGROUND_RGB; }");

ModeButton::ModeButton(OperatingModeButtonType a_OperatingModeButtonType, ChannelContainerWidget* ParentContainer, bool DoubleChanneled, int RowSpan)
: QPushButton(GetOperatingModeButtonLabel(a_OperatingModeButtonType), (QWidget*)ParentContainer),
m_OperatingModeButtonType(a_OperatingModeButtonType),
m_DoubleChanneled(DoubleChanneled),
m_RowSpan(RowSpan)
{
ModifyStyle();
setCheckable(true);
setFixedWidth(-1);
}

//-----------------------------------------------------------------------------

QString ModeButton::GetEnabledStyleSheetString()
{
QString styleSheetString = m_styleSheetEnabledTemplate;

styleSheetString.replace("TEXT_RGB", m_rgbModeButtonEnabledText);
styleSheetString.replace("BORDER_RGB", m_rgbModeButtonEnabledBorder);
styleSheetString.replace("BACKGROUND_RGB", m_rgbModeButtonEnabledBackground);

return styleSheetString;
}

//-----------------------------------------------------------------------------

QString ModeButton::GetDisabledStyleSheetString()
{
QString styleSheetString = m_styleSheetDisabledTemplate;

styleSheetString.replace("TEXT_RGB", m_rgbModeButtonDisabledText);
styleSheetString.replace("BORDER_RGB", m_rgbModeButtonDisabledBorder);

return styleSheetString;
}

//-----------------------------------------------------------------------------

QString ModeButton::GetCheckedStyleSheetString()
{
QString styleSheetString = m_styleSheetCheckedTemplate;

styleSheetString.replace("TEXT_RGB", m_rgbModeButtonCheckedText);
styleSheetString.replace("BORDER_RGB", m_rgbModeButtonEnabledBorder);
styleSheetString.replace("BACKGROUND_RGB", m_rgbModeButtonCheckedBackGround);

return styleSheetString;
}

//-----------------------------------------------------------------------------

void ModeButton::ModifyStyle()
{
setStyleSheet(GetEnabledStyleSheetString() + GetDisabledStyleSheetString() + GetCheckedStyleSheetString());
}

///////////////////////////////////////////////////////////////////////////////

0

Решение

Установка как m_styleSheetEnabledTemplate, так и m_styleSheetCheckedTemplate набивка Свойства 0 исправляет мою проблему. Я полагаю, что значения отступов по умолчанию различны, и именно так происходит смещение текста. Спасибо @ JohannesSchaub-litb за предложение попробовать набивка имущество.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]