我想更改项目的文本颜色QListWidget
.
例如,某些项目为红色文本,而其他项目为蓝色文本.我怎么做?谢谢.
我怎样才能创建一个QListWidgetItem,它下面有1个图像和2个标签/字符串,它们支持css?
这是我尝试过的最后一件事:
class CustomListWidgetItem(QListWidgetItem, QLabel):
def __init__(self, parent=None):
QListWidgetItem.__init__(self, parent)
QLabel.__init__(self, parent)
Run Code Online (Sandbox Code Playgroud)
我正在使用PyQt btw
我有一个QListWidgetItem
,有一个QWidget
和一些QLabels
.标签的高度(imageLabel
,titleLabel
和descriptionLabel
)取决于文本长度变化.QWidget的高度也是如此,它可以提供不同的尺寸QListWidgetItem
.到目前为止,参数setSizeHint
是静态的:
QListWidgetItem* listWidgetItem = new QListWidgetItem();
listWidgetItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
listWidgetItem->setSizeHint(200, 180));
QWidget* widget = new QWidget();
QVBoxLayout* rootLayout = new QVBoxLayout();
rootLayout->setAlignment(Qt::AlignTop);
QHBoxLayout* contentLayout = new QHBoxLayout();
contentLayout->setAlignment(Qt::AlignLeft);
QLabel* imageLabel = new QLabel();
imageLabel->setPixmap(pixmap);
contentLayout->addWidget(imageLabel, 0, Qt::AlignTop);
QVBoxLayout* informationLayout = new QVBoxLayout();
informationLayout->setAlignment(Qt::AlignTop);
QLabel* titleLabel = new QLabel("<b>" + title + "</b>");
titleLabel->setWordWrap(true);
informationLayout->addWidget(titleLabel);
QLabel* descriptionLabel = new QLabel(description);
descriptionLabel->setWordWrap(true);
informationLayout->addWidget(descriptionLabel);
QLabel* dateLabel = …
Run Code Online (Sandbox Code Playgroud) 我有一个QListWidget
由自定义小部件使用setItemWidget
.
这些自定义列表项是完全静态的,它们只有一堆带有各种文本和图像的标签。我的 QListWidget 显示正确。我允许拖放重新排序,当我将项目移动到不同位置后,它就会变得不可见。它不会消失,因为它占用了显示屏的空间,我什至可以点击它,它只是完全不可见,就好像它里面的所有标签突然变成了空白。有趣的是,如果我为这些小部件设置背景颜色,自定义背景颜色不会被清除,只会清除内容。
如果我将泛型插入QListWidgetItem
到 中QListQidget
,即使在移动后它们仍然可见。
是什么导致自定义小部件变为空白,如何阻止这种情况发生?
例子。
QListWidgetItem *item;
MyCustomWidget *custom;
item = new QListWidgetItem();
item->setText("This will remain visible");
listWidget->addItem(item);
item = new QListWidgetItem();
custom = new MyCustomWidget ();
custom->setName(QString("This will vanish")); // this will add text to one of the labels inside it.
listWidget->addItem(item);
item->setSizeHint(QSize(50,65));
listWidget->setItemWidget(item, custom);
Run Code Online (Sandbox Code Playgroud)
用鼠标移动项目后,通过“普通”QListWidgetItems 添加的项目保留其内容,而通过“普通”QListWidgetItems 添加的项目setItemWidget
其内容消失。
编辑
即使我的自定义小部件只是一个QLabel
,其内容在移动后也会消失。
QLabel *label;
item = new QListWidgetItem();
label = new QLabel();
label->setText("This label will vanish"); …
Run Code Online (Sandbox Code Playgroud) QListWidgetItem* item
要从a 中删除给定的,QListWidget* lst
我可以使用以下代码(取自此答案):
delete lst->takeItem(lst->row(item)); // method 1
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我只是销毁该项目,它也会从列表中删除(至少它会从列表中消失QListWidget
)。
delete item; // method 2
Run Code Online (Sandbox Code Playgroud)
QListWidget
文档指示使用takeItem
但没有提及任何有关删除该项目的信息(QListWidgetItem
也没有任何信息)。
要从列表中删除项目,请使用 takeItem()。
takeItem
使用方法一(然后删除)和方法二(直接删除)有什么区别吗?也许我错过了内存泄漏,未发出信号等?我的意思是,删除该项目(当然,如果您有的话)似乎比搜索它更容易。
问题=> 我想创建一个 QlistWidgetItem 对象,其中包含图像列表及其缩略图,其尺寸比我当前的尺寸相对较大(有点像 Windows 资源管理器中的“中图标”或“大图标”选项)
到目前为止,进度=> 我已经设法找到如何创建列表,但除了图标之外的所有内容都太小了。
我尝试过的=> 我尝试更改列表项的字体大小,假设 cld 也使字体按比例变大。没用。我还尝试根据另一位在线博主的说法使用(PIL's Image)设置缩略图的大小,但效果不佳。
代码片段=> #从 PIL 导入图像和 ImageQt,还导入 QtGui 和 QtCore
testimages = glob.glob(dirname + "/*.jpg")
# Create a list item for each image file,
# setting the text and icon appropriately
for image in testimages:
picture = Image.open(image)
picture.thumbnail((128,128), Image.ANTIALIAS)
icon = QIcon(QPixmap.fromImage(ImageQt.ImageQt(picture)))
item = QListWidgetItem(image, self)
item.setIcon(icon)
fonter = QFont("Times New Roman")
fonter.setPointSize(14)
item.setFont(fonter)
Run Code Online (Sandbox Code Playgroud)
希望你们能帮助我。:)
我正在学习 PySide,我很困惑如何在第一次将 QListWidget 项目设置为不可选择后将其设置回可选择状态。我知道我可以:
QListWidget.SetFlags(QtCore.Qt.ItemIsSelectable)
Run Code Online (Sandbox Code Playgroud)
我有点不确定为什么该标志被命名为“ItemIsSelelectable”,因为它似乎使该项目无法选择。但我想在设置此标志后将项目设置回可选状态。
我想知道是否有办法自定义 QListWidget 背景颜色。
我努力了:
listWidget=QtGui.QListWidget()
listWidget.setAutoFillBackground(True)
p = listWidget.palette()
p.setColor(listWidget.backgroundRole(), QtGui.QColor("#424242"))
listWidget.setPalette(p)
Run Code Online (Sandbox Code Playgroud)
虽然没有错误,但它仍然无法工作。
是否有可能为 . 的每一项添加隐藏价值qlistWidget
?
我从数据库获取数据并将其添加到qlistWidget
.
我想将id
每一行的 的 作为隐藏数据分配给每个项目以便qlistWidget
将来使用它,例如 HTML 标签<input type="hidden" name="id" value="15" />
。
下面是从数据库获取数据的代码。
QSqlQuery qry;
qry.prepare("SELECT * FROM users");
qry.exec();
while(qry.next()){
ui->listWidget->addItem(qry.value("username").toString());
}
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?
我正在使用QListWidgetItem
在我的QListWidget
.
在某些情况下,我希望我的某些行QListWidget
变得不可选择。(我的意思是我希望有些QListWidgetItem
是不可选择的)
有什么办法可以做到这一点吗?
PS:我试过了
listWidgetItem->setFlags(Qt::NoItemFlags)
listWidgetItem->setSelected(false);
Run Code Online (Sandbox Code Playgroud)
但它们不会禁用项目的选择。
编辑:
QStringList _strListClients = _strClients.split(",",QString::KeepEmptyParts,Qt::CaseInsensitive);
for(int i = 0; i < _strListClients.count(); i++)//Add Client's Check Boxes
{
QListWidgetItem* _listWidgetItem = new QListWidgetItem(_strListClients[i], listWidgetClients);
listWidgetClients->addItem(_listWidgetItem);
if(_strListClients[i] == "Unknown"){
_listWidgetItem->setSelected(false);
_listWidgetItem->setTextColor(Qt::red);
_listWidgetItem->setFlags(_listWidgetItem->flags() & ~Qt::ItemIsSelectable);
}
Run Code Online (Sandbox Code Playgroud)
}
所以基本上我刚刚开始学习 PyQt 并且我想在 listWidget 中获取元素的文本,但是每次我尝试 self.listWidget.currentItem().text() 时它都会抛出错误。为什么?
import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog, QApplication, QListWidget
from PyQt5.uic import loadUi
from PyQt5.QtWidgets import *
class MainPage(QDialog):
def __init__(self):
super(MainPage,self).__init__()
loadUi("HomePage.ui",self)
self.pushButton.clicked.connect(self.addToList)
self.selectButton.clicked.connect(self.getText)
def addToList(self):
customername = self.plainTextEdit_16.toPlainText()
self.listWidget.addItem(customername)
def getText(self):
item = self.listWidget.currentItem().text() ##error is here
print(item)
app = QApplication(sys.argv)
widget = MainPage()
widget.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud) 我有QListWidget
并且需要获取所选项目的索引。(我可以按值使用列表中的项目,但是我有std::vector
一个包含列表中每个项目的对象,还需要从中删除它们。)有一个功能,indexFromItem
但是它是protected(?),所以我可以用它。
有任何想法吗?
QList<QListWidgetItem *> itemList = lw1->selectedItems();
Run Code Online (Sandbox Code Playgroud) 我们正在寻找一种方法来增加QListWidget
我们在应用程序中使用的填充(或边距)。我们想为所有四个方向增加此值,以便为列表中的文本提供一些额外的空间
我看了两个文档QListWidget
和QListWidgetItem
并不能找到任何东西。对于QListWidget
存在的setContentsMargins
这是从继承QWidget
但这是小部件作为一个整体(而不是单个条目)。
我们可以做些什么来解决这个问题?感谢帮助!
qlistwidgetitem ×13
qlistwidget ×8
qt ×8
c++ ×5
python ×5
pyqt ×4
pyqt4 ×2
qt5 ×2
qwidget ×2
hidden-field ×1
pyqt5 ×1
pyside ×1
qlabel ×1
qtgui ×1
select ×1