gpt4 book ai didi

qt - QListView 带有用于查看文件系统的复选框

转载 作者:行者123 更新时间:2023-12-02 03:54:55 32 4
gpt4 key购买 nike

需要在带有图标和复选框的 QListView 中按给定路径列出目录,然后将标记文件夹的名称传输到程序。对于列表目录,我使用代码:

#include <QtGui/QApplication>
#include <QFileSystemModel>
#include <QListView>


int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QFileSystemModel model;

QListView listView;
listView.setModel(&model);
listView.setRootIndex(model.setRootPath("C:\\Program Files"));
listView.show();

return a.exec();
}

如何添加复选框并在按下按钮后传输它?

谢谢。

最佳答案

没有任何事情可以用几行代码来完成。您可以从 QFileSystemModel 派生并添加复选框列,或者创建一个执行相同操作的代理模型。

请注意,您可以使用内置选择机制按住 Ctrl 键单击/⌘ 键单击以将选择范围扩展到多个项目:

//main.cpp
#include <QApplication>
#include <QFileSystemModel>
#include <QGridLayout>
#include <QListView>
#include <QPushButton>
#include <QMessageBox>

class Win : public QWidget
{
Q_OBJECT
QListView * view;
QPushButton * button;
public:
Win(QAbstractItemModel * model, const QModelIndex & idx) :
view(new QListView(this)), button(new QPushButton("List Selection", this))
{
QGridLayout * lay = new QGridLayout;
lay->addWidget(view, 0, 0, 1, 2);
lay->addWidget(button, 1, 0);
setLayout(lay);
view->setSelectionMode(QAbstractItemView::MultiSelection);
view->setModel(model);
view->setRootIndex(idx);
connect(button, SIGNAL(clicked()), SLOT(showSelection()));
}
public slots:
void showSelection() {
QString str;
foreach (QModelIndex i, view->selectionModel()->selectedIndexes()) {
str.append(i.data().toString());
str.append("\n");
}
QMessageBox::information(this, "Selected items", str);
}
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFileSystemModel model;
Win v(&model, model.setRootPath("/"));
v.show();
return a.exec();
}

#include "main.moc"

关于qt - QListView 带有用于查看文件系统的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11245679/

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