gpt4 book ai didi

c++ - Qt : icon messing the width of QPushButton - Adjusting icon

转载 作者:太空狗 更新时间:2023-10-29 23:04:59 29 4
gpt4 key购买 nike

我目前为动态创建的 QPushButton 使用以下样式表属性

string mystyle =  "QPushButton { border: 1px solid #8f8f91;  border-radius: 1px; min-width: 90px; min-height: 18px;}"

The QPushButton also has an icon next to it - The QPushbutton is inside a QToolBar

当应用程序在我的计算机上运行时,这种样式工作正常。但是,当应用程序在显示被放大的另一个系统上运行时,问题就出现了。 (在 Windows-7 上,这是通过在控制面板中显示并选择 Larger-150% 来完成的)。当应用程序在具有放大显示的系统上运行时,这就是我得到的。 (其中的文字应该是“Hello MyBig World!!”)注意感叹号不见了

enter image description here

我相信只有当按钮中有图标时才会出现此问题。没有图标 QpushButton 看起来不错。这是没有图标的样子。请注意,文本现在完全可见。

enter image description here

这就是我创建 QPushButton 的方式

QPushButton *button_test = new QPushButton( "Hello MyBig World!!" ,this);
button_test->setStyleSheet(mystyle.c_str());
button_test->setIcon(QIcon(":/../SomeFile.png"));

关于为什么会发生这种情况以及如何解决此问题的任何建议 - 我的计算机上的按钮宽度很好,所有文本都带有感叹号。但是所有的文字都没有出现在字体被放大的电脑上。为了在该计算机上显示整个文本,我需要重新设置样式表的样式,更改并增加最小宽度。我不想一直重新设置样式,并且想知道解决此问题的正确且有效的方法。

更新

这是我现在使用的代码

std::string pbstyles = "QPushButton { border: 1px solid #8f8f91;  border-radius: 1px;  font: 12px;"
"background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #f6f7fa, stop: 1 #dadbde); "
"padding-right:50px;padding-left:50px;height:25px; }"
"QPushButton:pressed { background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #dadbde, stop: 1 #f6f7fa); }"
"QPushButton:hover{background-color: qlineargradient(spread:pad, x1:0, y1:0.0568182, x2:1, y2:0.0454545, stop:0 rgba(85, 170, 255, 255), stop:1 rgba(255, 255, 255, 255));}";


std::string ArrowStyle = "QPushButton::menu-indicator {/*background-color: darkblue ;*/ subcontrol-origin: padding; margin-right: -60px}";
pbstyles+=ArrowStyle;


QMenu *menu = new QMenu("This is a button",this);
QPushButton *button = new QPushButton( menu->title(),this);
button->setMenu(menu_contacts);
button->setStyleSheet(pbstyles.c_str());
button->setIcon(QIcon(":/someicon.ico"));
button->setIconSize(QSize(16, 16));
ui.toolBar->addWidget(button_contacts);

这就是我得到的(注意文本仍然被切碎了 :( !!!!)

enter image description here

最佳答案

在我的测试中发生这种情况是因为图标和按钮的文本被放大了,但按钮没有,要解决这个问题你可以使用这个:

QString stylesheet = ...font: 12px;... //Or another size that you expect the button text must have.

和:

pushButton->setIconSize(QSize(16, 16)); //Or another size that you expect the button icon must have.

这些设置应保证按钮的图标和文本在放大和未放大的桌面上具有相同的大小。

关于c++ - Qt : icon messing the width of QPushButton - Adjusting icon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20943762/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com