我想删除我的QListView的背景,以便可以看到下面的背景.我怎样才能做到这一点?
我尝试过setAttribute(Qt::WA_NoSystemBackground),setAttribute(Qt::WA_NoBackground)但这并没有改变任何事情.此外,我无法覆盖paintEvent()否则它不会绘制项目.
任何的想法?
我有一个如下所示的对话框:
该对话框具有连接到过滤器按钮的以下代码:
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)
但是,当我单击“过滤器”时,没有任何反应。我缺少什么?
我有一个显示方形项目的QListView.我的问题是,当我滚动这个列表时,它一次滚动一整行方块,我认为这看起来不对.相反,我希望列表一次滚动1个像素或两个 - 即平滑.这主要是化妆品的变化.知道我该怎么做吗?
我尝试按升序对 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)
有没有办法自定义排序策略?请帮助我...提前致谢。
我正在使用带有QListview的QFileSystemModel来显示目录中的所有文件.我想过滤该模型以显示某些类别的文件,例如:
我目前的代码是:
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)
当目录中存在所有类型的文件时,该代码不显示任何内容.
此外,我尝试过的东西对我来说并不好(指针可能对其他读者有用):
我创建了一个简单的QListView添加QStringListModel项,允许添加项目并编辑其文本.但是我不想允许添加空字段,并且我通过使用dataChanged模型中的信号来部分实现这一点,如果列表项在没有插入文本的情况下失去焦点或用户在Enter不添加文本的情况下按下键而发出.
但是,如果Esc按键,该字段将保持为空并且不会dataChanged发出信号.如果该字段为空而没有重载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)
不幸的是,该图标没有出现在列表中。
如何将图标添加到列表中?
如何从中删除项目QListView?对于QComboBox它,removeItem但我找不到相同的功能QListView.
使用pyqt4.
我有一个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) 请帮我解决这个问题......我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) 我用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)
问题是,当您拖动列表中的项目并尝试将其移动到另一个位置时,它更喜欢覆盖您拖动它的项目.我不希望通过拖放操作删除项目.
我用
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)不工作。
因此,当我尝试根据焦点项目执行某些操作时,我应该使用哪个信号,当我使用鼠标或向上/向下箭头移动单选项目时,将正确调用回调?
所以我有一个 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?