QPushButton视觉问题

时间:2012-07-31 06:35:49

标签: c++ qt qtstylesheets qpushbutton

我有两个自定义样式的QPushButton按钮。以下是Ok按钮的样式表:

QPushButton
{ 
    background-color:#9dce2c;
    border-radius:7px;
    border:1px solid #83c41a;
    color:#ffffff;
    font-size:15px;
    font-weight:bold;
    padding:4px 24px;
    text-decoration:none;
}
QPushButton:pressed
{
    border:2px solid black;
}

现在这就是它的样子:

Ok button

哪个好。但是,如果单击该按钮(获得焦点),它将开始如下所示:

Ok button focused

请注意文本周围有轻微的阴影矩形。看起来好像文本被“选中”了。当按钮失去焦点时,它会再次开始正常显示。我想这是因为选中的控件突出显示如下:

enter image description here

然而,我希望我的按钮保持不变,无论它是否专注。有什么方法可以解决这个问题吗?

4 个答案:

答案 0 :(得分:3)

找到解决方案。结果是非常简单。

问题确实是由接收焦点的按钮引起的。我需要做的就是将按钮的focusPolicy属性设置为NoFocus。它可以在QtDesigner中完成:

enter image description here

或代码中:

ui.okButton->setFocusPolicy(Qt::NoFocus);

完成后,点击按钮不会使其获得焦点,外观不会改变。

答案 1 :(得分:3)

这将删除橙色矩形:

QPushButton:focus {
    outline: none;
}

PS:您应该尝试将一些样式添加到焦点状态,如更改的背景颜色,以便此状态对用户保持“可见”。

答案 2 :(得分:0)

我没有尝试,但我认为你可以通过将QPushButton:hover设置为与QPushButton相同的样式来解决这个问题。有一些默认样式使按钮在悬停时变红,你只需找出它是哪一个(可能是hover)并覆盖它。

答案 3 :(得分:0)

此处:http://doc.qt.io/qt-5/stylesheet-examples.html

我找到了如下参数:

"selection-color: yellow;"
"selection-background-color: blue;"

我没有尝试过,但它可能就是你所需要的。