【问题标题】:How to display the names of all files in a folder in a window? Qt c++ [closed]如何在窗口中显示文件夹中所有文件的名称? Qt C++ [关闭]
【发布时间】: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{
 ///
}

有人遇到过这个问题需要解决吗? 谢谢

【问题讨论】:

  • vbox->addWidget(listwidget); 在你的循环中,为每个文件在相同的布局中添加相同的小部件是不好的
  • 不,我的问题不完全一样。因为我可以恢复文件。但是当我发布它们时,它们不会占用我窗口的所有空间.....
  • @Thibaut B. 好的,谢谢。我理解我的错误。我将 vbox->addwidget 放在循环之外...
  • 您不需要为您拥有的每个文件创建一个列表小部件。相反,您必须创建一个列表小部件并使用例如QListWidget::addItem() 函数向其中添加列表items

标签: c++ qt c++11


【解决方案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 是用来显示文本的,如果在添加项目时连接字符串,则不需要它。
猜你喜欢
  • 2016-08-10
  • 2014-07-13
  • 2014-05-21
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 2012-02-23
  • 1970-01-01
相关资源
最近更新 更多