내 MainWindow에 QListWidget
이 있는데 VideoWidgets (맞춤형 QWidget
) 목록이 표시됩니다. VideoWidget
에는 클릭 가능한 레이블이 있습니다. 레이블을 클릭하면 파일을 삭제 한 다음 VideoWidget
이있는 QListItem
을 제거해야합니다 (QListWidget
). 여기 내 VideoWidget 클래스는 다음과 같습니다위젯 내에서 QListWidget의 항목 제거
VideoWidget::VideoWidget(QWidget *parent) : QWidget(parent)
{
ClickableLabel *smallRed = new ClickableLabel(this)
//...
QObject::connect(smallRed,SIGNAL(clicked()),this,SLOT(removeVideo()));
}
void VideoWidget::removeVideo(){
//...code to remove a file
QListWidget* list = myParent->getList();
QListWidgetItem* item = list->takeItem(list->currentIndex().row());
myList->removeItemWidget(item);
}
문제는 smallRed
라벨을 클릭하면 list->currentIndex().row()
이 돌려 보낼 -1 의미 QListWidget에서의 항목을 선택하지 것입니다. 위젯의 다른 곳을 클릭하면 현재 항목이 선택됩니다. 코드가 작동하려면 현재 VideoWidget
의 아무 곳이나 클릭 한 다음 ClickableLabel
을 클릭해야합니다. 내 ClickableLabel
을 한 번의 클릭으로 동일한 효과를 얻을 수있는 방법이 있습니까?
추가 정보가 필요합니다. 'VideoWidget'의 내용은 무엇입니까? 그것은 무엇을 보여줍니까? – thuga
내 이전 질문보기 http://stackoverflow.com/questions/26802294/how-to-create-custom-layout-for-widget/. 그것의 꽤 많은 위젯 4 가지 라벨을 표시합니다. 하나는 'ClickableLabel' – testus
나는 여기에 최선의 선택은'QListView'를 사용하고 사용자 정의 위젯을 사용자 정의 델리게이트로 칠하는 것이라고 생각합니다. remove 레이블에서 마우스 클릭을 처리하려면 ['QAbstractItemDelegate :: editorEvent'] (http://qt-project.org/doc/qt-5/qabstractitemdelegate.html#editorEvent)를 사용하십시오. 방법에 대한 아이디어를 얻으려면 [이 답변] (http://stackoverflow.com/a/11778012/2257050)을 확인하십시오. [이 예제] (http://kunalmaemo.blogspot.fi/2010/12/creating-custom-qitemdelegate-with.html)도 확인하십시오. – thuga