各スライドを表すタイルの縦方向のリストを表示する PowerPoint で表示されるものと同様の外観を与える項目の縦方向のリストを作成できるようにしたいと考えています。
QListView
aと a を併用するのQAbstractListModel
が正しい方法だと思います。私のQAbstractListModel
サブクラスにはQList
ofが含まれてい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 に変換してタイルの画像を表示することに興味がありません。