我希望能够创建一个垂直的项目列表,该列表的外观与您在 PowerPoint 中看到的内容相似,它显示了代表每张幻灯片的垂直磁贴列表。
我相信使用 aQListView
和 aQAbstractListModel
是解决这个问题的正确方法。我的子QAbstractListModel
类包含一个QList
. QGraphicsViews
因此,每个图块(或幻灯片)都是一个QGraphicsView
. 我花了很多时间试图在互联网上找到一个类似的例子,我也一直在使用 Qt 的例子,但运气不佳。
这是我的模型课...
我可以在 中收到“ADDING”消息addgvw
,但在 中无法收到“HERE”消息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 并显示图块的图像不感兴趣。