如果这个问题重复,很抱歉,但是我真的很难找到任何答案。

请记住,我是C ++编程的新手。

我的问题是这个。我有一个用QtCreator制作的GUI。有两个绑定keyReleaseEvent的侦听器,一个侦听器绑定在主类(SuperFalcon)上,一个侦听器绑定在QTextEdit(这是单独的且经过修改的类)。我有QFrame,我想在“ Ctrl + f”键事件上切换隐藏/显示。由于该QFrame(对象名称为findWidget)窗口小部件属于SuperFalcon-> ui,所以没有问题,一切正常,当我尝试在QTextEdit中使“ Ctrl + f”成为问题时,问题就开始了,因为它是独立的事件侦听器。基本上我试过了。

主要类别的名称是“ SuperFalcon”,因此:

superfalcon.h中,我做了一个公共静态指针,如下所示:

public:

    static QFrame *fWidget;


然后在superfalcon.cpp中,我首先执行

ui->findWidget->hide();然后

fWidget = ui->findWidget;希望在小部件上获得指针。

接下来,在我的keyReleaseEvent函数中的QTextEdit类中,我试图获取类似SuperFalcon::fWidget->show()的指针,但是我得到了未定义的引用。

因此,为了简化起见,我不知道如何(如果可能的话)从另一类(QTextEdit类)中获取属于一个类(SuperFalcon)的QFrame小部件的引用,以便在QFrame上执行一些命令。

如果不清楚,我可以提供一些代码。

最佳答案

您必须具有任何静态成员变量的定义。
由于一个定义规则,此定义必须位于源文件中。

只需添加以下行:

QFrame* SuperFalcon::fWidget;


到“ superfalcon.cpp”。

08-26 10:02