【发布时间】:2018-06-21 07:10:48
【问题描述】:
我在 Draw 类的构造函数中的 QGridLayout 中有一个 QListWidget。QGridLAyout 包含其他元素。
Draw::Draw(QWidget *parent):QDialog(parent){
gridlayout=new QGridLayout;
gridlayout->addLayout(hbox,0,0);
gridlayout->addLayout(hbox1,1,0);
gridlayout->addLayout(hbox2,2,0);
gridlayout->addWidget(listWidget,3,0);
gridlayout->addLayout(hbox4,4,0);
this->setLayout(gridlayout);
}
点击 QPushButton 时。我正在调用一个填充 QListWidget 的插槽。
//插槽
void Draw::fillListWidget(){
//item is QListWidgetItem
item=new QListWidgetItem;
item->setSizeHint(QSize(0,50));
listWidget->addItem(item);
//WidgetfillListWidget is an other class with parameters for the QListWidget
listWidget->setItemWidget(item,new WidgetfillListWidget(label1,path));
}
在我的其他课程中,我构建了新的 QWidget 来填充 QlistWidget。 QListWidget 包含一个标签、一个字符串和一个 QPushButton。
WidgetfillListWidget::WidgetfillListWidget(QString label, QString p){
instanceDraw=new Draw(this);
QString name = label;
QString path = p;
name1=new QLabel(name,this);
path1=new QLineEdit(path,this);
remove=new QPushButton("remove",this);
hboxlist=new QHBoxLayout;
hboxlist->addWidget(name1);
hboxlist->addWidget(path1);
hboxlist->addWidget(remove);
setLayout(hboxlist);
connect(remove,SIGNAL(clicked()),instanceDraw,SLOT(removeItem()));
}
在 Draw 类中,我有一个必须删除项目但它不起作用的插槽
void Draw::removeItem(){
listWidget->takeItem(listWidget->row(item));
}
删除该项目不起作用。我认为它来自连接中的 Draw 对象。但我不明白如何解决这个问题。有人有想法吗?
【问题讨论】:
-
takeItem删除并返回给定行中的项目,然后您必须自己删除它delete listWidget->takeItem(listWidget->row(item)); -
我有一个分段错误。我的 Draw 类实例可能有问题?
-
@Thomas1314 为什么要将 QString 添加为小部件?
path1=new QString(path,this);hboxlist->addWidget(path1); -
@eyllanesc 对不起。我错了。这是一个 QLineEdit ....
-
但问题依旧...