2011-05-08 4 views
1

이전에 Qt에서 항목 대행자를 한 번도 해보지 않았으므로 설명서에 복잡한 대리자에 대해 잘 설명하지 않은 것 같습니다.Qt에서 Symbian 스타일 목록보기를 만드는 방법

이 일반적인 탐색 목록입니다

Delegate style 1

, 아이콘과 하위 레이블은 다음과 같습니다

나는 한 스타일리스트

유형 (3 ^) 심비안의 2 개 스타일을 만들 필요가 선택 과목.

타입 2 등

Delegate style 2

이 (온/오프) 누름 버튼이 토글 할 수있는 설정 목록에 대한 인 - 버튼 또는 컨텍스트 메뉴를 실행

이러한 종류의 항목 대표를 만드는 방법은 무엇입니까? 이것은 제 생각에 가장 좋은 갈 방법 및 당신이 뭘 하려는지 달성하기 쉽다 -

최고 감사합니다, 쥐

답변

2

한번 비슷한했습니다,리스트 뷰에이 대리자를 지정합니다. 이게 내가 한 일이야.

위임 클래스 선언. 보시다시피 QLabel * 레이블이 있습니다. 필요에 따라 다른 레이블이나 누름 단추를 추가 할 수 있습니다.

class MyItemDelegate : public QStyledItemDelegate 
{ 
public: 
    explicit MyItemDelegate(QObject *parent = 0); 
    ~MyItemDelegate(); 
protected: 
    void paint(QPainter *painter, 
       const QStyleOptionViewItem &option, const QModelIndex &index) const; 
    QSize sizeHint(const QStyleOptionViewItem &option, 
        const QModelIndex &index) const; 
private: 
    QLabel *label; 
}; 

내 paint() 및 sizeHint() 메소드.

QSize MyItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const 
{ 
    if(!index.isValid()) 
     return QSize(); 
    QVariant data = index.data(Qt::DisplayRole); 

    label->setText(data.toString()); 
    label->resize(label->sizeHint()); 
    QSize size(option.rect.width(), label->height()); 
    return size; 
} 

void MyItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const 
{ 
    if(!index.isValid()) 
     return; 
    QVariant data = index.data(Qt::DisplayRole); 

    // Not necessary to do it here, as it's been already done in sizeHint(), but anyway. 
    label->setText(data.toString()); 

    painter->save(); 

    QRect rect = option.rect; 

    // This will draw a label for you. You can draw a pushbutton the same way. 
    label->render(painter, QPoint(rect.topLeft().x(), rect.center().y() - label->height()/2), 
        QRegion(label->rect()), QWidget::RenderFlags()); 

    painter->restore(); 
} 

희망이 당신이 찾고있는 것입니다. 행운을 빕니다!

+0

이것은 내가 찾고 있었던 것입니다! 고맙습니다! – Gerstmann

0

당신은이 옵션을

1) QML 있습니다. Link to Example

여기서는 목록보기에 대리인을 사용하는 방법을 보여줍니다.

2) QItemDelegate - 서브 클래스 QItemDelegate는 Link to QItemDelegate

+0

QML은 기본 모양과 느낌을 유지하려는 옵션이 아닙니다. 내가 QItemDelegate 하위 클래스에 필요한 알아, 문제가 거기에 더 복잡한 위임자에 대해 하나 이상의 형식 요소가 관련된에 대한 이해하기 쉬운 설명서가 있습니다. – Gerstmann

관련 문제