c++ - 从 QListWidget 获取小部件

标签 c++ qt qwidget qlistwidget

我有一个名为 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) ); .我不确定我在这里遗漏了什么。

最佳答案

  1. dynamic_cast 的语法是

    VideoWidget *widget = dynamic_cast<VideoWidget*>(ui->myList->itemWidget(item));
    
  2. 你应该使用 qobject_cast 相反,因为它是一个QObject:

    VideoWidget *widget = qobject_cast<VideoWidget*>(ui->myList->itemWidget(item));
    
  3. 添加代码,至少Q_ASSERT(widget); ,在转换后验证转换是否成功(对于转换失败返回 nullptr)。

关于c++ - 从 QListWidget 获取小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26827640/

相关文章:

C++:越来越复杂的错误误导调试器

c++ - Magick++ 无法读取原始 nef 图像

c++ - 在 sfml 中使用 vertexArray 的正确方法是什么?

c++ - 我是否必须手动删除 QSet 的每个(指针)元素?

c++ - 为什么我在 Qt 中继承 QWidget 类时会发生内存泄漏

c++ - 向自定义 QWidget 添加滚动条

c++ - 从远程 MySQL 服务器本地导出 .csv 数据

macos - 如何更改 Qt Creator 中的终端?

c++ - 不断更新 Opengl 窗口

c++ - 拖放 QGraphicSscene - 鼠标光标在小部件的中心