4

次のコードを使用すると、空のテーブル ウィジェットが表示されるのはなぜですか?

QString imgPath = "C:\\path\\to\\image.jpg";
QImage *img = new QImage(imgPath);

QTableWidget     *thumbnailsWidget = new QTableWidget;
QTableWidgetItem *thumbnail = new QTableWidgetItem;
thumbnail->setData(Qt::DecorationRole, QPixmap::fromImage(*img));

thumbnailsWidget->setColumnCount(5);
thumbnailsWidget->setRowCount(3);
thumbnailsWidget->setItem(0, 0, thumbnail);

setCentralWidget(thumbnailsWidget);

画像をQTableWidgetItemに入れるにはどうすればよいですか?

ありがとうございました。

PS:
テーブルが実際には空ではないことに気付きました。さまざまな QTableWidgetItem 要素をクリックすると、空の要素が青色になり、座標 [0,0] を持つ要素が異なる方法で強調表示されます: 左側に薄い青色のバーがあるシアン...

4

3 に答える 3

8

あなたはほとんどすべてうまくやっていますがimg、たとえば次のように制御してみてください。

QString imgPath = "C:\\path\\to\\image.jpg";
QImage *img = new QImage();
bool loaded = img->load(imgPath);
if (loaded) {
    QTableWidget *thumbnailsWidget = new QTableWidget;
    QTableWidgetItem *thumbnail = new QTableWidgetItem;
    thumbnail->setData(Qt::DecorationRole, QPixmap::fromImage(*img));

    thumbnailsWidget->setColumnCount(5);
    thumbnailsWidget->setRowCount(3);
    thumbnailsWidget->setItem(0, 0, thumbnail);

    w.setCentralWidget(thumbnailsWidget);
} else {
    qDebug()<<"Image "<<imgPath<<" was not opened!";
}

うまくいけば、それはあなたを助けます! 幸運を!

于 2013-01-16T21:17:14.437 に答える
5

OK、画像を再スケーリングする必要がありました:

thumbnail->setData(Qt::DecorationRole, QPixmap::fromImage(*img).scaled(100, 100));
于 2013-01-17T09:35:17.613 に答える