美文网首页my-QT专栏
QT提升类后信号函数无法访问的问题

QT提升类后信号函数无法访问的问题

作者: c之气三段 | 来源:发表于2021-06-23 20:13 被阅读0次

当我使用UI界面开发工具时,我将一个UI界面内添加一个QTreeview后将这个界面类提升到MainWindow中就可以正常的运行使用,但当我打开被提升的类,他是一个Wiget派生类,因为QTreeView是这个类的子对象。因此无法访问到QTreeView的一些东西。由于拿不到这个QTreeView的cpp(已经被QT封装到xml文件中了),但我由想直接把这个widget的cpp当作QTreeView的cpp来使用给他添加功能时,我发现是可以这样用的

void ShowWiget::rightPopupMenu(const QModelIndex& index)
{
    if(qApp->mouseButtons()==Qt::RightButton)
    {
        TreeItem* item=static_cast<TreeItem*>(index.internalPointer());
        if(item)
        {
              RightMenu::getInstence()->showMenu(item->getRightMenuType());
        }
    };
}

我发现QT的这种view视图中可以直接通过QModelIndex这个类获取到那个选中的项。但问题来了我使用信号的时候发现他没有鼠标点击信号pressed

 connect(ui->treeView,&ShowWiget::pressed,this,&ShowWiget::rightPopupMenu);

为了能触发这个槽函数,我采用的是手动把这个Widet的继承类改成QTreeView发现这么干完全没问题。


image.png

QT可以正常运行代码,于是这个问题就解决了。
qApp需要引入#include <QApplication>。

相关文章

网友评论

    本文标题:QT提升类后信号函数无法访问的问题

    本文链接:https://www.haomeiwen.com/subject/ynxiyltx.html