我正在编写PyQt应用程序,但在创建自定义列表视图时遇到了一些麻烦.我希望列表包含任意小部件(特别是一个自定义小部件).我该怎么做?
似乎替代方案是创建一个包含在滚动条中的表格或网格视图.但是,我希望能够利用模型/视图方法以及嵌入(树视图)支持内置函数句柄.
为了澄清,自定义小部件是交互式的(包含按钮),因此解决方案不仅仅需要绘制小部件.
目前,我在继承QtGui.QListWidget的类中使用以下while循环来迭代所有项:
i = 0
while i < self.count():
item = self.item(i)
i += 1
Run Code Online (Sandbox Code Playgroud)
我希望我可以使用:
for item in self.items():
Run Code Online (Sandbox Code Playgroud)
但是items()方法需要一个QMimeData对象,我不知道如何构造以返回所有项目.是否有比上面的while循环更清晰的方法?
如何从中删除所选项目qlistWidget
.
我尝试编写以下代码,但不起作用.
QList<QListWidgetItem*> items = ui->listWidget->selectedItems();
foreach(QListWidgetItem item, items){
ui->listWidget->removeItemWidget(item);
}
Run Code Online (Sandbox Code Playgroud)
现在,如何删除我从中选择的项目qlistWidget
?
假设我需要显示一个项目列表.每个项目都包含一个QPushButton图像和一些文本.当用户点击按钮时会发生某些事情(即我需要获取信号).在Qt中实现这个的正确方法是什么?
经过一些阅读,我明白如果我使用QListWidget和QListWidgetItem,这可以实现.我可以根据我的需要对每个QListWidgetItem进行子类化,并在列表小部件中设置它们.
但是,我还读到一个更合适的方法(MOdel View方法)是使用QlistView和QItemDelegate.但如果我使用QItemDelegate,似乎我只能绘制小部件.如何获得按钮事件?
对不起这篇巨大的帖子.我对何时使用QListWidget/QListView的整个概念感到困惑.
我经常QListWidget
有几个信号和插槽连接.一切都按照我的预期运作.我可以更新,检索,清除等
但UI不支持多种选择.
如何"启用"多项选择QListWidget
?我对PyQt的有限经验告诉我,我需要QListWidget
通过子类创建一个自定义..但接下来呢?
Google给了我C++答案,但我正在寻找Python
http://www.qtforum.org/article/26320/qlistwidget-multiple-selection.html
http://www.qtcentre.org/threads/11721-QListWidget-multi-selection
在CSharp中,它就像写作一样简单:
listBox1.Items.Add("Hello");
listBox1.Items.Add("There");
foreach (string item in listBox1.Items )
{
MessageBox.Show(item.ToString());
}
Run Code Online (Sandbox Code Playgroud)
我可以轻松地将不同的对象添加到列表框中,然后使用foreach检索它们.我在Qt 4.8.2中尝试了相同的方法,但看起来它们是不同的.虽然它们看起来非常相似.我发现Qt支持foreach所以我继续尝试类似于:
foreach(QListWidgetItem& item,ui->listWidget->items())
{
item.setTextColor(QColor::blue());
}
Run Code Online (Sandbox Code Playgroud)
明显失败了.它说items()需要一个让我困惑的参数.我试图遍历ListBox本身,那么这意味着什么?我尝试传递ListBox对象作为参数本身,这也失败了:
foreach(QListWidgetItem& item,ui->listWidget->items(ui->listWidget))
{
item.setTextColor(QColor::blue());
}
Run Code Online (Sandbox Code Playgroud)
所以这是我的问题:
(假设我想使用QMessagBox而不是setTextColor,并希望打印出QlistWidget中的所有字符串项.)
在我的表格中,我有一个QListWidget
包含可检查的内容QListWidgetItems
.我正在寻找一种方法来捕获QListWidgetItem
被检查/未检查的事件.我没有看到任何这样的信号,但也许我错了.用什么我目前做的是QListWidget::itemClicked()
信号和检查checkState
的QListWidgetItem
,但是这不是我想要的,因为这种事件发生的项目被点击任何时候,不要只是去对号翻转.谁能提供一些帮助?谢谢!
我想在QListWidget中存储一些文件名.我需要有完整的文件路径,但我只想显示基本文件名.我可能会在每个项目的工具提示中存储完整的文件名,但我宁愿没有列表项的工具提示.
有谁知道是否有可能在QTreeWidget上选择多个项目以及如何启用多项选择?
我想要选择的所有项目都是顶级QTreeWidgetItems,并且所有子项都被设置为禁用(即QTreeWidgetItem.setDisabled(True))
QListWidget :: selectedItems返回一个QListWidgetItem列表,但删除我找到的项的唯一函数是takeItem,它只接受索引,selectedIndexes函数受保护.
qlistwidget ×10
qt ×7
c++ ×5
pyqt ×3
python ×2
qlistview ×2
pyqt4 ×1
qt-signals ×1
qt5 ×1
qtreewidget ×1
select ×1