PowerPoint에서 각 슬라이드를 나타내는 세로 막대 목록을 보여주는 것과 비슷한 모양을 나타내는 항목의 세로 목록을 만들 수 있기를 원합니다.QGraphicsView 개체의 QListView 만들기
QListView
을 QAbstractListModel
과 함께 사용하는 것이 올바른 방법이라고 생각합니다. 내 QAbstractListModel
하위 클래스는 QList
이 QGraphicsViews
입니다. 따라서 각 타일 (또는 슬라이드)은 QGraphicsView
입니다. 나는 인터넷에서 비슷한 예제를 찾으려고 많은 시간을 보냈고 Qt의 예제를 사용했지만 많은 운이 없었습니다.
여기 내 모델 클래스 ...
입니다 내가 addgvw
에서 "추가"메시지를 얻을 수 있습니다,하지만 난 data
에서 "여기"메시지를받을 수 없습니다. 내 위젯 클래스의 내 생성자에서
myDataModel::myDataModel(QObject *parent) : QAbstractListModel(parent)
{
}
QVariant myDataModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
{
return QVariant();
}
cGraphicsViewWrapper* gvw = GVWrapperList.at(index.row());
if (role == Qt::DisplayRole)
{
qDebug() << "HERE";
//Return the QGraphicsView object to display
return QVariant::fromValue(gvw->gvwView());
}
return QVariant();
}
int myDataModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
return GVWrapperList.size();
}
void myDataModel::addgvw(int role, cGraphicsViewWrapper& gvw)
{
if (role == Qt::EditRole)
{
beginInsertRows(QModelIndex(), GVWrapperList.size(), GVWrapperList.size());
GVWrapperList.append(&gvw);
qDebug() << "ADDING " << GVWrapperList.size() << rowCount();
endInsertRows();
}
}
이 내가 내 모델 클래스를 사용하는 방법입니다 ...
나는 다음 새 타일을 만들어 내 기능에 ...
myGVWWidget::myGVWWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::myPlottingWidget)
{
ui->setupUi(this);
Model = new myDataModel(this);
ui->GWVListView->setModel(Model);
connectAllSignals();
}
전화 타일을 만든 후 나는 결국
Model->addChart(Qt::EditRole, *gvw);
... 전화 내 위젯이 비어 :(
편집 : QPixMap으로 변환하고 타일 이미지를 표시하는 데 관심이 없다는 이유로 여러 가지 이유로 질문을받을 수 있다고 생각하기 때문에 추가하고 싶습니다.
예, 오버 헤드를 크게 인식하고 있습니다. 원래 QListWidget을 사용하여 ~ 20 개 항목을 처리 했으므로 성능이 뛰어났습니다. 문제가되지 않을 것입니다. 하지만 목록을 뒤로 스크롤하고 항목을 선택할 수없는 것과 같은 다른 문제가있었습니다. – roundtheworld