如何在窗口中显示文件夹中所有文件的名称? Qt C++ [关闭]
Posted
技术标签:
【中文标题】如何在窗口中显示文件夹中所有文件的名称? Qt C++ [关闭]【英文标题】:How to display the names of all files in a folder in a window? Qt c++ [closed] 【发布时间】:2018-06-25 09:30:29 【问题描述】:在我正在创建的软件中,我有一个窗口,我想在其中列出彼此下方的所有文件。 我尝试了一个解决方案,但与窗口大小相比,列表太小了......我希望列表占据我窗口的所有空间。
这是我的代码:
viewList::viewList()
QString path="/home/myFolder";
QListWidget *listwidget=new QListWidget;
QVBoxLayout *vbox=new QVBoxLayout;
foreach(QString file, files)
listwidget->addItem(file);
vbox->addWidget(listwidget);
this->setLayout(vbox);
et dans le .h :
class viewList : public QWidget
///
有人遇到过这个问题需要解决吗? 谢谢
【问题讨论】:
Get only files but not directories in QT? 的可能重复项vbox->addWidget(listwidget);
在你的循环中,为每个文件在相同的布局中添加相同的小部件是不好的
不,我的问题不完全一样。因为我可以恢复文件。但是当我发布它们时,它们不会占用我窗口的所有空间.....
@Thibaut B. 好的,谢谢。我理解我的错误。我将 vbox->addwidget 放在循环之外...
您不需要为您拥有的每个文件创建一个列表小部件。相反,您必须创建一个列表小部件并使用例如QListWidget::addItem()
函数向其中添加列表items。
【参考方案1】:
解决方案是将这一行 vbox->addWidget(listwidget);
放在循环之外,因为它会为每个文件的相同小部件创建一个布局位置。
这样一来,listWidget 就不能取代父窗口小部件的所有位置。
正确的解决方案:
foreach(QString file, files)
listwidget->addItem(file);
vbox->addWidget(listwidget);
【讨论】:
感谢您的回答。但是我有一个新问题......因为我想在项目 A 文件中添加每次迭代的日期和 QLabel,但我不能做 listwidget->addItem(nameLabel)。 .... @Tom13000,您可以在添加项目时将文件字符串与其他字符串连接起来。如果连接还不够,也许可以实现自己的模型。有关文件信息,请查看QFileInfo 好的,谢谢,但知道每个项目我都需要日期(QString)、文件(QString)和 QLabel。最简单的解决方案是通过 QListWidget 和 QListWidgetItem 吗?我看不到如何连接两个 QString ... 我的问题是我想为每个文件添加它的日期(QString),一个Qlabel和文件名(QString)。 @Tom13000,QLabel 是用来显示文本的,如果在添加项目时连接字符串,则不需要它。以上是关于如何在窗口中显示文件夹中所有文件的名称? Qt C++ [关闭]的主要内容,如果未能解决你的问题,请参考以下文章