문제

나는 구현을 만들었습니다 QAbstractListModel QT Jambi 4.4에서 수업을하고 모델을 QListView 아무것도 표시되지 않지만 모델을 사용하여 QTableView 데이터를 올바르게 표시합니다.

아래는 내 구현입니다 QAbstractListModel:

public class FooListModel extends QAbstractListModel
{
    private List<Foo> _data = new Vector<Foo>();

    public FooListModel(List<Foo> data)
    {
        if (data == null)
        {
            return;
        }

        for (Foo foo : data)
        {
            _data.add(Foo);
        }

        reset();
    }

    public Object data(QModelIndex index, int role)
    {
        if (index.row() < 0 || index.row() >= _data.size())
        {
            return new QVariant();
        }

        Foo foo = _data.get(index.row());

        if (foo == null)
        {
            return new QVariant();
        }

        return foo;
    }

    public int rowCount(QModelIndex parent)
    {
        return _data.size();
    }
}

그리고 여기 모델을 설정하는 방법은 다음과 같습니다.

Foo foo = new Foo();
foo.setName("Foo!");

List<Foo> data = new Vector<Foo>();
data.add(foo);

FooListModel fooListModel = new FooListModel(data);
ui.fooListView.setModel(fooListModel);
ui.fooTableView.setModel(fooListModel);

누구든지 내가 뭘 잘못하고 있는지 볼 수 있습니까? 모든 사람이 말했듯이 Alo가 깨지지 않았기 때문에 그것이 구현에 문제가 있다고 생각하고 싶습니다!

도움이 되었습니까?

해결책

나는 Jambi에서 경험이 없지만 Foo를 반환하는 대신 Method Data ()에서 QVariant를 반환해서는 안됩니까? 보기가 FOO를 문자열로 변환하는 방법을 어떻게 알 수 있는지는 명확하지 않습니다.

또한, 완전한 사용자 정의를 롤링하는 대신 사용하기 쉬운 QstandardModel 및 QstandardModelitem을 판매 할 수있는 기회가 있습니까? 그리고 당신이 한 번만보기 만하면, 전체 MVC 패턴을 모두 피하고 매우 쉽게 사용하기 쉬운 qlistwidget을 사용할 수 있습니다.

다른 팁

모델의 데이터 () 구현에는 두 가지 문제가 있습니다.

  • 항목 데이터 역할에 대해 다른 값에 실패합니다. 현재 구현은 모든 역할에 대해 동일한 값을 반환하며 일부 뷰는 문제가 발생할 수 있습니다.

  • Jambi의 QVariant는 일반 QT와 동일하지 않습니다. 돌아올 것이 없을 때
    그냥 돌아 오세요 null.

더 나은 구현은 다음과 같습니다.

public Object data(QModelIndex index, int role) {
    if (index.row() < 0 || index.row() >= _data.size())
        return null;

    if (role != Qt.ItemDataRole.DisplayRole)
        return null;

    return _data.get(index.row());
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top