내 QListWidget을 채우는 데 사용한 VideoWidget
이라는 사용자 정의 QWidget 클래스가 있습니다 ui->myList
. 목록의 항목을 두 번 클릭하면 VideoWidget
이 표시됩니다.QListWidget에서 위젯 가져 오기
connect(ui->myList,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(playClip(QModelIndex)));
void MainWindow::playClip(QModelIndex index){
QListWidgetItem* item = ui->myList->itemAt(0,index.row());
VideoWidget widget = <dynamic_cast>(VideoWidget*)(ui->myList->itemWidget(item));
cout << "custom widget data" << widget.getMyData() << endl;
}
VideoWidget widget = <dynamic_cast>(VideoWidget*)(ui->myList->itemWidget(item));
을 컴파일 할 수 없습니다. 내가 여기서 무엇을 놓치고 있는지 잘 모르겠습니다.
VideoWidget *widget = qobject_cast<VideoWidget*>(ui->myList->itemWidget(item));
것은 후, 적어도 Q_ASSERT(widget);
, 코드를 추가 dynamic_cast
의
를 사용해야하므로, Qt는 그 자신의 주조 기능은 정의 C++ 그러나
에
dynamic_cast<VideoWidget*> (ui->myList->itemWidget(item))
했을 것이다'VideoWidget * 위젯 =', 올바른? 오류가 발생합니다 ** "정적 어설 션이 실패했습니다 : qobject_cast는 유형이 Q_OBJECT 매크로가 있어야합니다"** qobject_cast를 사용하면 ** ** ^ – testus@testus 죄송합니다. 예, 물론 ... :) – hyde
오류는 어떻습니까? 내 MainWindow 헤더에 Q_OBJECT 매크로가 있습니다. – testus