7

から継承されたクラスがあります。そのクラスで、オブジェクトをQWidget作成し、表示するアイテムを入力します。リストビューでのアイテムの選択が変更されたら、イベントQListViewを取得したいと思います。selectionChange

どうすればこれを達成できますか?簡単に教えてください。

4

2 に答える 2

10

ビューがある場合、アイテムの選択に使用されるモデルがあります。それはと呼ばれQItemSelectionModelます。

たとえば、を使用するとQListView、次のようにselectionModelを取得できます。

QItemSelectionModel* selectionModel() const;

今、そのモデルから、あなたは多くの信号で接続することができるでしょう:

void currentChanged ( const QModelIndex & current, const QModelIndex & previous )
void currentColumnChanged ( const QModelIndex & current, const QModelIndex & previous )
void currentRowChanged ( const QModelIndex & current, const QModelIndex &    previous )
void selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected )

私はそれがあなたに少し役立つと思います!

于 2010-03-18T14:40:31.303 に答える
0

https://doc.qt.io/archives/qt-4.8/qlistwidget.htmlビューの代わりにQListWidgetを使用することをお勧めします。理由の詳細は覚えていませんが、このクラスには使用したいこれらのシグナルがあります。


https://doc.qt.io/archives/qt-4.8/qlistwidget.html#itemSelectionChanged これは接続する必要のあるシグナルです。

クラス宣言にスロットを作成します。

 private slots:
     void selChanged();

このスロットに、選択の変更時に実行したいことを入力します。シグナルをクラスのどこか(おそらくQWidget派生物のコンストラクター)のこのスロットに接続します。

 connect(yourListWidget, SIGNAL(itemSelectionChanged()), this, SLOT(selChanged()));

それでおしまい

于 2010-03-18T09:15:17.797 に答える