2011年12月21日水曜日

( Qt C++ )QListWidgetにアイコンをセットして表示する


来年1月からブログタイトルを替えます。 ”俺野眼藻”、"i MemoPad"、”さぁQt野郎"、”雑記の雑記”...などなど香ばしいタイトル候補をすでに何個か考えています。どうなるか楽しみです。


はい、それでは ”QListWidgetにアイコンをセットして表示する” をやっていきます。
C++ GUI Programming with Qt4にもサンプルは載っていますが省略しすぎで余計な処理満載なので、独自のものをつかいます。
また、いつものようにQtCreaterなどでuiにGUI部品が記述済みであるとします。(QtCreaterの使い方や細かいことなどは "Qtをはじめよう" や ”リファレンス” で確認してください。)
ではコードを

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)//uiにはGUI部品が記述(QListWidgetなど)
{
    ui->setupUi(this);//uiのGUI部品を初期化

    ui->listWidget->addItem(new QListWidgetItem("item1"));//item追加
    ui->listWidget->addItem(new QListWidgetItem("item2"));
    ui->listWidget->addItem(new QListWidgetItem("item3"));
    ui->listWidget->addItem(new QListWidgetItem("item4"));

    ui->listWidget->setIconSize(QSize(32,32));//アイコンサイズ32×32にセット

    QListWidgetItem *qitem;//QListWidgetにセットされている各アイテムの受け皿となる

    for(int i = 0; i < ui->listWidget->count(); i++)
    {
        qitem = ui->listWidget->item(i);//i行目のアイテム取り出し
        qitem->setIcon(QIcon("/home/ubuntu001/icon.png"));//アイコンセット
    }
}

簡単ですね。コメントの通りです。いちいちQListWidgetItemを取り出すあたりは理解しやすくするためで、短く

ui->listWidget->item(i)->setIcon(QIcon("/home/ubuntu001/icon.png"));

のように書いても大丈夫です。

実行すると以下のようになります。
以上です。