7

Qtで実行時にQListWidgetに2つの画像とテキストを追加するには? リストの先頭に 1 つの画像を配置し、最後に 1 つの画像を配置したいのですが、テキストは最初の画像の直後に配置する必要があります。

itemclicked イベント

connect(list, SIGNAL(itemClicked()), this, SLOT(clicked(QListWidgetItem *)));
void MyWidget::clicked(QListWidgetItem *item)
{
   //code

}
4

1 に答える 1

10

関数を見てくださいsetItemWidgetMyListItemWidget2つのアイコンラベルとテキストラベルを含むウィジェット(それを呼び出す)を設計でき、そのコンストラクターで2つのアイコンとテキストを提供します。次に、それをに追加できますQListWidget。サンプルコードは次のとおりです。

QIcon icon1, icon2; // Load them 
MyListItemWidget *myListItem = new MyListItemWidget(icon1, icon2, "Text between icons");
QListWidgetItem *item = new QListWidgetItem();
ui->listWidget->addItem(item);
ui->listWidget->setItemWidget(item, myListItem );

また、カスタムリストアイテムをデザインおよび表示するための最良のオプションであるを確認する必要がありQListViewます。QItemDelegate

あなたの接続に関する編集

信号をスロットに接続するとき、それらの署名は一致する必要があります。これは、スロットが信号より多くのパラメータを持つことができないことを意味します。信号スロットのドキュメントから

信号とスロットのメカニズムはタイプセーフです。信号の署名は、受信スロットの署名と一致する必要があります。(実際、スロットは余分な引数を無視できるため、受信する信号よりも短い署名を持つ場合があります。)

これは、シグナルがQListWidgetItem *接続に引数を持っている必要があることを意味します。

connect(list, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(clicked(QListWidgetItem *)))
于 2011-11-08T09:01:53.087 に答える