現在、動的に作成された QPushButton に次のスタイルシート プロパティを使用しています
string mystyle = "QPushButton { border: 1px solid #8f8f91; border-radius: 1px; min-width: 90px; min-height: 18px;}"
QPushButton の横にもアイコンがあります - QPushbutton は QToolBar 内にあります
このスタイルは、アプリがコンピューターで実行されている場合は正常に機能しますが、ディスプレイが拡大されている別のシステムでアプリケーションを実行すると問題が発生します。(windows-7 では、これはコントロール パネルの表示に移動し、Larger-150% を選択することによって行われます)。拡大表示のあるシステムでアプリを実行すると、これが得られます。(その中のテキストは、"Hello MyBig World!!" であると想定されています) 感嘆符が欠落していることに注意してください。
この問題は、ボタンにアイコンがある場合にのみ発生すると思います。アイコンがなければ、QpushButton は正常に見えます。アイコン無しだとこんな感じ。テキストが完全に表示されていることに注意してください。
これが私の 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);
これが私が得たものです(テキストがまだ切り刻まれていることに注意してください:( !!!!)