标签: qlistview

删除QListView背景

我想删除我的QListView的背景,以便可以看到下面的背景.我怎样才能做到这一点?

我尝试过setAttribute(Qt::WA_NoSystemBackground),setAttribute(Qt::WA_NoBackground)但这并没有改变任何事情.此外,我无法覆盖paintEvent()否则它不会绘制项目.

任何的想法?

qt background qlistview

3
推荐指数
1
解决办法
3813
查看次数

PyQt4 使用 setRowHidden 在 QListView 上按文本进行过滤

我有一个如下所示的对话框:

在此输入图像描述

该对话框具有连接到过滤器按钮的以下代码:

class Dialog(QtGui.QDialog, addWin.Ui_Dialog):
    ...
    self.list = QListView()
    self.filter.clicked.connect(self.filterClicked)
    ...
    def filterClicked(self):
        filter_text = str(self.lineEdit.text()).lower()
        for row in range(self.model.rowCount()):
            if filter_text in str(self.model.item(row).text()).lower():
                self.list.setRowHidden(row, True)
            else:
                self.list.setRowHidden(row, False)
Run Code Online (Sandbox Code Playgroud)

但是,当我单击“过滤器”时,没有任何反应。我缺少什么?

python pyqt pyqt4 qlistview qlineedit

3
推荐指数
1
解决办法
2954
查看次数

在QListView(或QAbstractItemView)中平滑滚动

我有一个显示方形项目的QListView.我的问题是,当我滚动这个列表时,它一次滚动一整行方块,我认为这看起来不对.相反,我希望列表一次滚动1个像素或两个 - 即平滑.这主要是化妆品的变化.知道我该怎么做吗?

scroll smooth qlistview

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

如何按升序对 ListView 项目进行排序?

我尝试按升序对 ListView 项目进行排序,所以我尝试了

Model->sort(int Column, Qt::AscendingOrder)
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我不喜欢 Qt::AscendingOrder 策略。实际上,该函数首先对以大写字符开头的单词进行排序,然后对以小写字符开头的其他单词进行排序。然后它将两个结果连接在一起。例如:

My ListView Items are: apple
                       Ball
                       rose
                       cat
                       Orange

And i'm getting the output as:  Ball
                                Orange
                                apple
                                cat
                                rose
Run Code Online (Sandbox Code Playgroud)

有没有办法自定义排序策略?请帮助我...提前致谢。

sorting qt qlistview qstandarditemmodel qt4.7

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

过滤QFilesystemModel

我正在使用带有QListviewQFileSystemModel来显示目录中的所有文件.我想过滤该模型以显示某些类别的文件,例如:

  • 文本文件:*.txt*.csv*.tab
  • 音乐:*.mp3*.flac*.ogg
  • 电影:*.avi*.mkv

我目前的代码是:

  MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
     Filemodel = new QFileSystemModel(this)                      ;
     Filemodel->setFilter( QDir::NoDotAndDotDot | QDir::Files )  ;
     proxy_model = new QSortFilterProxyModel();

     proxy_model ->setDynamicSortFilter(true);
     proxy_model ->setSourceModel( Filemodel ); 
     proxy_model ->setFilterKeyColumn(0);
     ui->Filtered_tbView->setModel( proxy_model )                ;
}
Run Code Online (Sandbox Code Playgroud)

(......)

/* combobox event to select file type to filter */
 void MainWindow::on_FSFilter_Combo_currentIndexChanged(int index)
{
 proxy_model->setFilterWildcard("*.txt");  // just a simple example here
 ui->Filtered_tbView->setModel( proxy_model )                ;
}
Run Code Online (Sandbox Code Playgroud)

当目录中存在所有类型的文件时,该代码不显示任何内容.

此外,我尝试过的东西对我来说并不好(指针可能对其他读者有用):

  • setNameFilters:运行良好,但让我们显示所有文件(未过滤只是灰色)
  • 自定义排序/过滤器模型示例 - >使用QSortFilterProxyModel这个示例有点过于复杂,不能过滤掉文件扩展,除了它使用regexp,这不是使用这里的许多过滤器时的最佳方法.
  • 我还从qt-project中找到了一个 …

qt qlistview qfilesystemmodel

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

QListView的Esc按键事件

我创建了一个简单的QListView添加QStringListModel项,允许添加项目并编辑其文本.但是我不想允许添加空字段,并且我通过使用dataChanged模型中的信号来部分实现这一点,如果列表项在没有插入文本的情况下失去焦点或用户在Enter不添加文本的情况下按下键而发出.

但是,如果Esc按键,该字段将保持为空并且不会dataChanged发出信号.如果该字段为空而没有重载QListView该类将是繁琐的(我使用设计者创建表单),我如何得到通知?

是否有另一个发出的信号或我可以用来实现的方法?

谢谢!

qt qt4 signals-slots qlistview qt5

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

如何使用 QStringListModel 在 QListView 中添加图标?

是否可以使用 QStringListModel 将图标添加到 ListView ?

这就是我正在做的。

QStringListModel* model;
QStringList List;
model->setStringList(List);
ui->listView->setModel(model);
...

model->setData(index, "Test");
model->setData(index,QIcon(":/icon.png"),Qt::DecorationRole);
Run Code Online (Sandbox Code Playgroud)

不幸的是,该图标没有出现在列表中。

如何将图标添加到列表中?

c++ qt qlistview qstringlistmodel

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

qt:从QListView中删除项目

如何从中删除项目QListView?对于QComboBox它,removeItem但我找不到相同的功能QListView.

使用pyqt4.

qt qt4 qlistview

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

如何从列表视图中删除项目?

我有一个QLineEdit、2 个QPushButtons(添加和删除按钮)和一个QListView。我想在单击添加按钮时将QLineEdit 文本添加到 QListView 中。同样,如果单击删除按钮,我必须从QListView中删除一个项目。我正在使用QStringListModel将QLineEdit文本添加到QListView。但我不知道如何删除QListView 项目。我怎样才能做到这一点?请帮助..提前致谢。

#ifndef  EXAMPLE_H
#define  EXAMPLE_H
#include <QWidget>
#include <QStringList>
#include <QStringListModel>


class EXAMPLE : public QWidget
{
    Q_OBJECT

 public:
     explicit EXAMPLE(QWidget *parent = 0);
     ~EXAMPLE();

 private slots:
      void on_addButton_released();
      void on_removeButon_released();

 private:
      Ui::EXAMPLE *ui;
      QStringList  stringList;
 };

 #endif // EXAMPLE_H


    EXAMPLE.CPP

    #include "EXAMPLE.h"
    #include <QStringListModel>


    EXAMPLE::EXAMPLE(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::EXAMPLE)
    {
        ui->setupUi(this);
        ui->listView->setModel(new QStringListModel(stringList));
    }

    EXAMPLE::~EXAMPLE()
    { …
Run Code Online (Sandbox Code Playgroud)

qt qlistview qlineedit qt4.7

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

拖放 QListView 项

请帮我解决这个问题......我QListView在左边有一个QWidget,在另一边有一个。在QListView我使用QStandardItem. 现在我想将QListView项目拖放到另一边QWidget,我也必须对项目做同样的事情QWidget。我可以通过使用将我的QListView项目拖放QListView自身内部

listView.setAcceptDrops(true);
listView.setDragEnabled(true);
listView.setDragDropMode(QAbstractItemView::InternalMove); 
Run Code Online (Sandbox Code Playgroud)

这单独在 QListView 中工作正常。我想将 QListView 项目拖放到另一个小部件。我怎样才能做到这一点?我知道我必须像处理这样的事件

void dropEvent(QDropEvent *);
void dragMoveEvent(QDragMoveEvent *);
void dragEnterEvent(QDragEnterEvent *);
void mousePressEvent(QMouseEvent *);
Run Code Online (Sandbox Code Playgroud)

我只是这样试过

void Example::dragMoveEvent(QDragMoveEvent *e)
{
    // The event needs to be accepted here
    e->accept();
}

void Example::dragEnterEvent(QDragEnterEvent *e)
{
    // Set the drop action to be the proposed action.
    e->acceptProposedAction();
}

void Example::dropEvent(QDropEvent *e)
{
    qDebug("Items Dropped");
} …
Run Code Online (Sandbox Code Playgroud)

qt drag-and-drop qlistview qt4.7 qt4.8

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

停止QListView删除拖放条目

我用QStringListModel创建了一个QListView.

listModel = new QStringListModel(ui->listView);
ui->listView->setModel(listModel);
ui->listView->setEditTriggers(QListView::NoEditTriggers);
ui->listView->setDragDropMode(QListView::InternalMove);
Run Code Online (Sandbox Code Playgroud)

我使用以下方法添加项目:

void MainWindow::addItem(QString result)
{
    if (result == "")
        return;
    listModel->insertRow(listModel->rowCount());
    QModelIndex a = listModel->index(listModel->rowCount()-1);
    listModel->setData(a,result);
}
Run Code Online (Sandbox Code Playgroud)

问题是,当您拖动列表中的项目并尝试将其移动到另一个位置时,它更喜欢覆盖您拖动它的项目.我不希望通过拖放操作删除项目.

c++ qt qlistview qt5

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

在 QListView 中选择项目的信号是什么?

我用

QObject.connect(self.image_list, QtCore.SIGNAL('clicked(QModelIndex)'), self.on_row_changed)
Run Code Online (Sandbox Code Playgroud)

最初,但我发现当我按下右键时,on_row_changed即使项目是灰色的(不是焦点)也会被调用。我应该连接哪个信号?

我通过对qt4.8的文档搜索,信号activated (const QModelIndex &index )void indexesMoved (const QModelIndexList &indexes)不工作。

因此,当我尝试根据焦点项目执行某些操作时,我应该使用哪个信号,当我使用鼠标或向上/向下箭头移动单选项目时,将正确调用回调?

python selection signals-slots pyqt4 qlistview

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

QItemSelectionModel currentChange 信号在应用程序启动时发出?

所以我有一个 QMainWindow 并在其构造函数中执行以下操作:

QStringList stringList;
stringList << "aaa" << "bbb" << "ccc";
QStringListModel *list = new QStringListModel(stringList);
ui->listView->setModel(list);

stringList.append("ddd");
list->setStringList(stringList);

QObject::connect(ui->listView->selectionModel(), &QItemSelectionModel::currentChanged, [&]() {
    //do stuff
});
Run Code Online (Sandbox Code Playgroud)

为什么在应用程序启动时会发出 currentChanged 以及如何避免在实际单击 ListView 之前发出 currentChanged?

qt qlistview qmainwindow qt5

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