Combobox 또는 Double Spin Box와 같은 위젯의 배경색을 어떻게 설정합니까?

StackOverflow https://stackoverflow.com/questions/177778

  •  05-07-2019
  •  | 
  •  

문제

더블 스핀 박스의 배경색을 설정하려고 노력하고 있으며 어떤 기능을 사용해야하는지 잘 모르겠습니다.

나는 어떤 기능이 부르는 것을 보았다 SetBackgroundRole 수락하는 a Qt::ColorRole, 그러나 나는 이것을 어떻게 사용하는지 잘 모르겠습니다.

친절하게 알려주세요. QComboBox 또는 QDoubleSpinBox?

도움이 되었습니까?

해결책

사용 a QPalette 스타일 저자는 다른 플랫폼의 지침과 기본 테마 엔진에 의해 제한되기 때문에 모든 스타일에 대해 작동하지는 않습니다.

배경색이 올바른지 확인하기 위해 QT 스타일 시트. 다음은 내가 QComboBox:

myComboBox->setStyleSheet("QComboBox { background-color: blue; }");

나는 구체적으로 시도하지 않았다 QSpinBox, 그러나 나는 그것이 똑같이 작동 할 것 같아요!

다른 팁

FHE는 일반적으로 정확하지만 팔레트에서 다른 배경 역할을 사용하는 위젯 (스핀 박스 및 버튼/콤보해스 등)을 설명하지 않습니다. 보다 일반적인 해결책은 다음과 같은 것입니다.

QPalette pal = widget.palette();
pal.setColor(widget.backgroundRole(), Qt::blue);
widget.setPalette(pal);

또는 다양한 팔레트 역할에 대한 설명을 살펴보고 원하는 팔레트 역할을 파악한 다음 변경하려는 다른 팔레트 역할을 파악한 다음 변경하려는 위젯에 적용 할 수 있습니다. 팔레트 변경은 어린이 위젯으로 전파되어야합니다.

실제로 Qcombobox의 경우 QPalette에 대한 QT 문서를 보면 배경 역할은 아마도 원하는 것이 아닙니다. 당신이 원하는 것은 :

QPALETTE ::베이스 텍스트 항목 위젯의 배경색으로 주로 사용되지만 Combobox 드롭 다운 목록 및 도구 모음 핸들의 배경과 같은 다른 그림에도 사용할 수 있습니다. 일반적으로 흰색 또는 다른 밝은 색입니다.

그래서 여기에 사용중인 코드는 다음과 같은 위젯의 색상과 일치하는 콤보 상자의 배경색을 설정합니다.

QPalette pal = myComboBox->palette();
pal.setColor(QPalette::Base, pal.color(QPalette::Window));
myComboBox->setPalette(pal);

분명히 QT 4.1에서 this->setAutoFillBackground( true ); 팔레트가 배경색을 적용 할 수 있습니다.

이전 답변은 부탁 할 수없는 사람의 배경색을 설정할 수 있습니다. QComboBox, 그들은 편집 가능한 일을하지 않습니다 QComboBox. 이 경우, 당신은 다음을 도출해야합니다 QLineEdit 편집에 사용되는 위젯 및 배경을 재설정합니다.

내가 작동하는 방법은 다음과 같습니다.

    QComboBox *myComboBox = new QComboBox();
    myComboBox->setEditable(true);
    QColor backColor = QColor(246, 230, 230);
    QLineEdit *lineEditor = myComboBox->lineEdit();
    QPalette pal = lineEditor->palette();
    pal.setColor(QPalette::Base, backColor);
    lineEditor->setPalette(pal);

실제 위젯에 상관없이 파란색 인 팔레트를 구성하십시오.

comboBox->setPalette( QPalette( Qt::blue ) );

나는 같은 것을 시도 할 것이다

QPalette pal = widget.palette();
pal.setColor(QPalette::Window, Qt::blue);
widget.setPalette(pal);
comboBox->setPalette( QPalette( Qt::blue ) );

나를 위해 잘 작동합니다!

이전에 답변은 저를 위해 일하지 않았지만 모든 응답을 혼합하여 마침내 작업했습니다. QT 5.12:

QPalette pal = ui.widget->palette();
pal.setColor(QPalette::Base, Qt::red);
ui.widget->setPalette(pal);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top