2010-11-30 11 views
2

QListWidgetを継承するクラスを作成しました。これはカードのスタックを意味します。QListWidgetが1のアイテムのみを表示するようにする

私はカードをテーブル(プログラムの別のオブジェクト)にドラッグできるようにドラッグアンドドロップ機能をオーバーロードしましたが、今は別の問題がつきまといます。

QListWidgetはすべてのアイテムを表示します(主に最初からGUIに追加するためです)。

私のメインウィンドウで 私のCardPileオブジェクトを初期化し、シャッフルされたカードのベクトルでそれを埋めます。

今、私はQListWidgetに1つだけを表示させたいですが、すべてのカードでグリッドを表示します。

ドロップで、私はQListWidgetから項目を削除します。しかし、私は一度に1枚のカードを追加したり削除したりすることはできないのかどうかはわかりません(したがって、1枚のカードしか表示されません)。

public: 
    TileStack(QWidget *parent = 0); 
    void addCard(QPixmap pixmap, QPoint location); 
    QPixmap showCard(); 

protected: 
    void dragEnterEvent(QDragEnterEvent *event); 
    void dragMoveEvent(QDragMoveEvent *event); 
    void startDrag(Qt::DropActions supportedActions); //in this function I remove the current item 

これらは私のCardPileの関数QListWidgetです。そう

void TileStack::startDrag(Qt::DropActions /*supportedActions*/) 
{ 
    QListWidgetItem *item = currentItem(); 

    QByteArray itemData; 
    QDataStream dataStream(&itemData, QIODevice::WriteOnly); 
    QPixmap pixmap = qVariantValue<QPixmap>(item->data(Qt::UserRole)); 
    QPoint location = item->data(Qt::UserRole+1).toPoint(); 

    dataStream << pixmap << location; 

    QMimeData *mimeData = new QMimeData; 
    mimeData->setData("card", itemData); 

    QDrag *drag = new QDrag(this); 
    drag->setMimeData(mimeData); 
    drag->setHotSpot(QPoint(pixmap.width()/2, pixmap.height()/2)); 
    drag->setPixmap(pixmap); 

    if (drag->exec(Qt::MoveAction) == Qt::MoveAction) 
     delete takeItem(row(item)); 
    //should I also make the add to the next item here? and how exactly should I put it  here? 
} 

私は現在、(私はforloopのすべてのカードを追加)メインウィンドウにシャッフルカードの私のベクトルを持っているので。

または私はメインウィンドウとCardPile間を接続する信号とスロットをしなければならないが - そう

delete takeItem(row(item)); 

が呼び出されたときに、私は、リストに次のカードを追加すると言う信号を発しますか?フィードバック

答えて

2

ため

ありがとうございます代わりにQListWidgetの(desriptionの最初の行は、あなたがahieveたい正確に何である)QStackWigetを使用することができます。

+0

はい、私はそれについて考えました。このウィジェット内では、QListWidgetItemを使用してlistWidgetを埋めています。私もQStackedWidgetをそれらで埋めることはできますか? – TheDudeAbides

+0

ウィジェットのリストにアクセスすることはできませんが、すべてのウィジェットにインデックスでアクセスすることができます –

関連する問題