gpt4 book ai didi

c++ - 从 QTableWidget 中的目录插入图像

转载 作者:太空狗 更新时间:2023-10-29 20:39:34 24 4
gpt4 key购买 nike

大家好。我有一个问题。我有一个 QTableWidget,我需要在其中放置目录中的图像并检索所选单元格中的图像名称。它如何根据目录中的文件数自动生成行数和列数?我可以手动将图像添加到表格中,但这不是我想做的。我想这一定是

QDir dir("images/");
QFileInfoList dirContent = dir.entryInfoList(QStringList()<< "*.png", QDir::Files |
QDir::NoDotAndDotDot);

但还是不知道我该怎么做。

最佳答案

有两种方法。

非递归

main.cpp

#include <QDir>
#include <QFileInfo>
#include <QTableWidget>
#include <QPixmap>
#include <QApplication>

int main(int argc, char **argv)
{
QApplication application(argc, argv);
QTableWidget tableWidget(100, 5);
QDir dir("images/");
for (const auto& fileInfo : dir.entryInfoList(QStringList{"*.png"}, QDir::Files | QDir::NoDotAndDotDot))
{
static int row = 0, column = 0;
QTableWidgetItem *newItem = new QTableWidgetItem(QObject::tr("%1").arg((row+1)*(column+1)));
newItem->setData(Qt::DecorationRole, QPixmap(fileInfo.absoluteFilePath()));
tableWidget.setItem(row, column, newItem);
if (column == tableWidget.columnCount()) {
column = 0;
row++;
}
}
tableWidget.show();
return application.exec();
}

主程序

TEMPLATE = app
TARGET = main
QT += widgets
CONFIG += c++11
SOURCES += main.cpp

构建并运行

qmake && make && ./main

递归

main.cpp

#include <QDir>
#include <QDirIterator>
#include <QFileInfo>
#include <QTableWidget>
#include <QPixmap>
#include <QApplication>

int main(int argc, char **argv)
{
QApplication application(argc, argv);
QTableWidget tableWidget(100, 5);
QDir dir("images/");
dir.setFilter(QDir::NoDotAndDotDot| QDir::Files);
QDirIterator it(dir, QDirIterator::Subdirectories);
while (it.hasNext()) {
static int row = 0, column = 0;
it.next();
QFileInfo Info = it.fileInfo();
QString path = Info.absolutePath();
if(Info.isFile() && path.endsWith(".png")) {
QTableWidgetItem *newItem = new QTableWidgetItem(QObject::tr("%1").arg((row+1)*(column+1)));
newItem->setData(Qt::DecorationRole, QPixmap(path));
tableWidget.setItem(row, column, newItem);
if (column == tableWidget.columnCount()) {
column = 0;
row++;
}
}
}
tableWidget.show();
return application.exec();
}

主程序

TEMPLATE = app
TARGET = main
QT += widgets
CONFIG += c++11
SOURCES += main.cpp

构建并运行

qmake && make && ./main

关于c++ - 从 QTableWidget 中的目录插入图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27504533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com