3

私は今のところ本当に立ち往生しています..私のアプリケーションは、クリックで(アニメーション)フレームを作成できます。これらのフレームは、移動、削除、または編集できます。それらを削除するには、ある種の右クリックコンテキストメニューが必要です。

私の試みは、QListWidget を作成し、そこに QListWidgetItems (フレーム) を挿入することです。これらのアイテムをそこに入れることができますが、もちろんフレームを保管する方法がわかりません。

次のように QListWidgetItem から派生した新しいクラスを作成しようとしました。

    #pragma once

    #include <qobject.h>
    #include <QtGui>
    #include <Frame.h>

    class FrameItem : public QListWidgetItem
    {
    public:
        FrameItem();
        Frame frame;
        void setFrame(Frame f);
        Frame getFrame();
        int id;
        void setId(int id);
        int getId();
    };

これは実際には機能しますが、itemClicked() シグナルはもうトリガーされません。

void itemClicked(QListWidgetItem* item)
{   
    std::cout << item->text().toStdString() << std::endl;
};

itemClicked(QListWidgetItem* item) のパラメーターを itemClicked(FrameItem* item) に変更すると、シグナルは発生しなくなります。

itemClicked() スロットを上書きする必要がありますか? はいの場合、どのように?多くのデータを保存し、右クリックのコンテキストメニューを提供するためのより良いアプローチはありますか?

4

2 に答える 2

1

関数シグネチャを変更すると、信号はトリガーされません。QListWidgetItem * を受け取り、それを FrameItem に再解釈_キャストするだけです。

FrameItem ではないリストに何も挿入しない限り、安全です。

于 2013-06-05T08:00:49.940 に答える