【问题标题】:itemDoubleClicked signal for subclass of QListWidgetItemQListWidgetItem 子类的 itemDoubleClicked 信号
【发布时间】:2013-04-09 08:18:34
【问题描述】:

我已经尝试了我所知道的一切(诚然不是很多)并在谷歌上搜索了大约一个小时,但我就是想不通。

我有一个名为PlaceHolder 的类,它继承自QListWidgetItem。我希望能够在此注册双击,所以我尝试在QListWidget 上使用信号itemDoubleClicked(QListWidgetItem*)。但是,当我这样做时,我需要一个具有相同参数的插槽。如果我不需要访问被单击的PlaceHolder 的函数/变量,这将不是问题,但我需要。

如果您还需要知道什么来帮助我,请随时提出。感谢您在此问题上花费的任何时间和精力。

【问题讨论】:

    标签: c++ qt signals qlistwidget slots


    【解决方案1】:

    我对你的问题有点不清楚。问题是您有 QListWidgetItem* 而不是 PlaceHolder*?

    试试:

    void MyWidget::handleDoubleClickSlot(QListWidgetItem* item)
    {
        PlaceHolder* placeHolderItem = qobject_cast<PlaceHolder*>(item);
    
        if (placeHolderItem == NULL)
        {
            // oops, not a PlaceHolder item
            return;
        }
    
        placeHolderItem->myAwesomePlaceHolderMethod();
    }
    

    如图所示,如果项目不是 PlaceHolder 对象,它将返回 NULL。

    【讨论】:

    • 感谢您的快速响应,但我收到错误消息:no matching function call to 'qobject_cast(QListWidgetItem*&amp;)'。我搞砸了哪一部分?
    • 嗯,您是否按照上面的方法输入它,首先在“PlaceHolder*”周围输入尖括号,然后再输入括号?您需要从某些东西中包含“#include ”,但是在小部件中,某些东西肯定应该包含...
    • 谢谢,我忘记了项目周围的括号。我的错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多