2014-01-06 1 views
3

조정 QPushButton을 QPushButton을도 옆에 아이콘이 Qt는 : 아이콘은 QPushButton을의 폭을 장난 - 나는 현재 동적으로 생성을 위해 다음과 같은 스타일 시트 속성을 사용하여 아이콘

string mystyle = "QPushButton { border: 1px solid #8f8f91; border-radius: 1px; min-width: 90px; min-height: 18px;}" 
- QPushButton을이다 QToolBar 내부

이 스타일은 응용 프로그램이 내 컴퓨터에서 실행될 때 잘 작동합니다. 디스플레이가 확대 된 다른 시스템에서 응용 프로그램을 실행할 때 문제가 시작됩니다. (Windows-7에서는 제어판에서 표시하고 더 큰 150 %를 선택하면됩니다.) 확대 된 디스플레이가있는 시스템에서 앱을 실행하면 이것이 나옵니다. 주의 느낌표 표시가

enter image description here

누락 (그 안에 텍스트가 "!! 안녕하세요 MyBig 세계"로 가정한다) 나는 버튼의 아이콘이있을 때이 문제가 발생합니다 생각합니다. 아이콘이 없으면 QpushButton은 괜찮아 보입니다. 이것은 아이콘이없는 것처럼 보입니다. 텍스트가 이제 완전히 보입니다. 내 QPushButton을을 만드는 오전 방법

enter image description here

입니다

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

답변

1

내 테스트에서 버튼의 아이콘과 텍스트가 확대 되었기 때문에 이러한 현상이 발생하지만

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. 

이 설정은 버튼의 두 아이콘과 텍스트가 같은 크기있을 것이라는 점을 보장한다 확대하지 확대 된 데스크톱.

+0

방금 ​​내 게시물을 업데이트 - 귀하의 방법은 정말 문제를 해결하지 않습니다 – MistyD

관련 문제