如何在窗口中显示文件夹中所有文件的名称? 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++ [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在textedit Qt C ++中读取文本文件

Qt 中如何改变Label大小

如何获取指定的文件夹内文件的全部名称?

将给出文件夹中所有项目名称的函数[重复]

qt窗口设置背景图片文件路径

emacs中,怎么样将文件列表中的文件在另一个窗口打开?