我有一个名为VideoWidget
的自定义QWidget类,该类用于填充QListWidget ui->myList
。双击列表中的任何项目,应给我其VideoWidget
。
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) );
。我不确定我在这里缺少什么。 最佳答案
dynamic_cast
的语法是
VideoWidget *widget = dynamic_cast<VideoWidget*>(ui->myList->itemWidget(item));
您可能应该改用
qobject_cast
,因为那是一个QObject:VideoWidget *widget = qobject_cast<VideoWidget*>(ui->myList->itemWidget(item));
在强制类型转换之后添加代码,至少要添加
Q_ASSERT(widget);
以验证强制类型转换是否成功(失败的强制类型返回nullptr
)。关于c++ - 从QListWidget获取小部件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26827640/