标签: qlistview

PySide:带有小动画和按钮的自定义QListView

我想知道如何使用自定义列表项创建QListView.我想在每个条目的左侧显示一个小的精灵动画,一些信息以及右侧的几个按钮.我还需要能够检测标题的点击次数.

我已经调查过QListView,但发现我无法用它来做这件事.一个几个 类似的问题,指出我朝QAbstractItemDelegateQAbstactListModel,但没有示例代码,我不能换我的头周围.我一直坚持超越QAbstractItemDelegatepaint()方法 - 我只是不知道如何以产生预期效果的方式覆盖它.

非常感谢您的回复!


即我想要创建这样的东西: 在此输入图像描述

qlistview pyside

6
推荐指数
0
解决办法
1687
查看次数

如何处理鼠标在Qt中右键单击

我正在使用QListView来显示朋友名字的列表.当我点击名称时,它应该选择一个名称并显示与个人资料相关的信息,然后在右键单击它需要显示上下文菜单而不选择名称并显示个人资料信息.我面临的问题是右键单击它是选择名称,还显示上下文菜单.我不希望在右键单击中选择名称,只显示上下文菜单.我正在使用Qt contextmenuevent,如:

void contextMenuEvent(QContextMenuEvent *ce)
{
    QPoint pos = ce->pos();
    emit customContextMenuRequested(pos);
}   
Run Code Online (Sandbox Code Playgroud)

这不起作用,从不调用上面的插槽.

qt qlistview

6
推荐指数
1
解决办法
2万
查看次数

Qt:使用 QListView 和 QFileSystemModel 浏览文件系统。如何突出显示文件夹中的第一项?

我在没有键盘/鼠标的系统上做主题所说的事情,所以我需要“从代码”完成这项工作。当我更改 QListView 的 RootIndex 时,我想突出显示第一行。

这是我制作的一个小型测试项目中的 mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QEvent>
#include <QKeyEvent>
#include <QDebug>
#include <QTimer>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    model = new QFileSystemModel;
    model->setRootPath("/Users/anders/Downloads/Browser");

    listView = new QListView;
    listView->setModel(model);
    listView->show();

    QTimer::singleShot(2000, this, SLOT(LightItUp1()));

}

void MainWindow::LightItUp1()
{
    qDebug("LightItUp1");
    listView->setRootIndex(model->index("/Users/anders/Downloads"));
    listView->setCurrentIndex(model->index(0, 0, listView->rootIndex()));

    QTimer::singleShot(2000, this, SLOT(LightItUp2()));
}

void MainWindow::LightItUp2()
{
    qDebug("LightItUp2");
    listView->setRootIndex(model->index("/Users/anders/Downloads/Browser"));
    listView->setCurrentIndex(model->index(0, 0, listView->rootIndex()));

    QTimer::singleShot(2000, this, SLOT(LightItUp3()));
}


void MainWindow::LightItUp3()
{
    qDebug("LightItUp3");
    listView->setRootIndex(model->index("/Users/anders/Downloads"));
    listView->setCurrentIndex(model->index(0, 0, listView->rootIndex()));

    QTimer::singleShot(2000, this, SLOT(LightItUp4()));
}


void MainWindow::LightItUp4() …
Run Code Online (Sandbox Code Playgroud)

qt qlistview qfilesystemmodel

5
推荐指数
1
解决办法
1万
查看次数

Qt拖放QListView删除释放它的项目

我正在开发一个可排序的小型QlistView.

    iListView = new QListView(this);
    //Creating a standard item model
    iStandardModel = new QStandardItemModel(this);

    //First item
    QStandardItem* item1 = new QStandardItem(QIcon(":/cover-story-album-art.jpg"),"First Item");
    //Second item
    QStandardItem* item2 = new QStandardItem(QIcon(":/cover-story-album-art.jpg"),"Second item");
    //third item 
    QStandardItem* item3 = new QStandardItem(QIcon(":/cover-story-album-art.jpg"),"Third![enter image description here][1] item");

    //Appending the items into model
    iStandardModel->appendRow(item1);
    iStandardModel->appendRow(item2);
    iStandardModel->appendRow(item3);

    //Setting the icon size
    iListView->setIconSize(QSize(40,30));

    //Setting the model
    iListView->setModel(iStandardModel);

    //Setting listview geometry
    iListView->setGeometry(QRect(0,0,240,320));
    iListView->setDragEnabled(true);
    iListView->setAcceptDrops(true);
    iListView->setDragDropMode(QAbstractItemView::InternalMove);
Run Code Online (Sandbox Code Playgroud)

好了拖放工作,但是如果我将项目放在除了列表末尾之外的任何其他项目上,则会有一个问题."拖动"项目将替换"已释放"项目.

QListView在不同场景下的屏幕截图 QListView在不同场景下的屏幕截图

qt drag-and-drop qlistview

5
推荐指数
1
解决办法
2716
查看次数

在 QFileSystemModel() 中列出文件的最佳方法?

我正在开始 Qt/pySide 编程,并尝试以 QFileSystemModel 作为模型实现一个简单的 QListView。我已经完成了这项工作,并且还在模型上定义了一个名称过滤器。我想获取 QListView (或者更确切地说是底层模型)中所有文件的列表。

下面的代码似乎可以做到这一点,但是非常丑陋,而且不可能是正确的方法。帮助!

model = myQListView.model()
idx = model.index(model.rootPath())
for i in range(0, model.rowCount(idx)):
    child = idx.child(i, idx.column())
    print model.fileName(child)
Run Code Online (Sandbox Code Playgroud)

qt qlistview pyside qfilesystemmodel

5
推荐指数
1
解决办法
2652
查看次数

如何将标头设置为QListView

我有一个QListView,里面有5个项目.在我的QListView中说(美国,加拿大,丹麦,埃及,芬兰).现在我想为所有这些项目设置一个公共标题作为COUNTRIES.如何将标题设置为QListView.请帮忙.

qt qt4 qlistview qheaderview qt5

5
推荐指数
1
解决办法
5773
查看次数

列表为空时,QListView显示文本

当QListView中没有项目时,我想显示一些文本(如"无项目").
我试图覆盖QListView的paintEvent方法,但它没有任何效果.

qt qlistview

5
推荐指数
1
解决办法
2022
查看次数

问:如何在使用QScroller时停止拖动QListView的视口

我在QListView上使用QScroller.

如何在列表到达开头或结尾时停止拖动列表?

如下图所示. 在此输入图像描述

qt scroll qlistview

5
推荐指数
1
解决办法
1171
查看次数

如何防止 Qt 对 QListView 中的图标进行 alpha 混合选择?

我有一个使用 QTableView 和 QListView 的 Qt 应用程序。在两个witdgets 中我都显示了一些图标。

问题是,当用户选择其中一个条目时,Qt alpha 会混合图标上的选择,从而使图标显示的对比度较低且颜色略有不同。

我希望 Qt 首先绘制选区,然后在顶部绘制图标,这样无论是否选择它们,它们看起来都一样。我怎样才能做到这一点?

更新:

这就是我的问题:

与普通图标的效果

使用白色矩形图标更容易识别:

带有白色矩形图标的效果

当您使用图形编辑器检查颜色值时,您会看到颜色值发生变化。我希望 Qt 在没有此覆盖的情况下按原样绘制图标。

这里的 QListView 采用颜色渐变背景样式。但我对无样式的 QTableView 也有同样的问题。

顺便说一句,所有图标都是 SVG。

c++ qt qtableview qlistview

5
推荐指数
1
解决办法
539
查看次数

是否可以将自定义小部件添加到 QListView 中?

我有一个很大的日志数据(100、1000、100000、...记录),我想以下列方式将其可视化:

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

为了避免性能和内存问题,我应该使用哪个小部件(例如QListView, QListWidget)以及如何使用?

c++ qt qlistview

5
推荐指数
1
解决办法
3990
查看次数