1
서브 클래 싱 된 QComboBox를 사용자 정의하려면 SubClassed입니다. 필자는 사용자 정의 작업을 시작하기 전에 내 스타일 시트가 제대로 적용되었는지 테스트하기 위해 다음과 같은 paintEvent() 메서드를 작성했습니다. 그러나이 paintEvent를 사용하면 선택한 항목이 표시되지 않습니다 (이미 선택된 항목 또는 새로 선택한 항목).서브 클래 싱 된 QComboBox에 paintEvent()를 작성하는 방법
class MyComboBox: public QComboBox
{
Q_OBJECT
public:
MyComboBox(QWidget *parent = 0): QComboBox(parent){}
virtual void paintEvent(QPaintEvent* pEvent)
{
QStylePainter painter(this);
QStyleOptionComboBox opt;
initStyleOption(&opt);
painter.drawComplexControl(QStyle::CC_ComboBox, opt);
QVariant itemData = this->itemData(this->currentIndex(), Qt::DisplayRole);
if(!itemData.isNull() && qVariantCanConvert<QPen>(itemData))
style()->drawItemText(&painter,this->rect(),Qt::AlignLeft,(this->palette()), true, itemData.toString());
}
};
paintEvent를 어떻게 수정합니까? 또한, 다른 Qt 컨트롤에 대한 paintEvent 문서가 있습니까?
함수 끝에 QComboBox :: paintEvent (pEvent)를 추가하십시오. – hank
@hank 무엇을 달성할까요? OP는 이미 명시 적으로 콤보 박스를 그립니다. – cmannett85
@ go4sri 정확하게 그려지는 것이 무엇인지 설명해 주시겠습니까? (또는 사진을 게시하는 것이 더 좋습니다.) – cmannett85