引用来自不同类的QWidget

时间:2019-01-16 14:18:45

标签: c++ qt-creator

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

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

我的问题是这个。我有一个在 QtCreator 中制作的GUI。有{strong>两个 侦听器绑定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。

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

2 个答案:

答案 0 :(得分:1)

您必须在superfalcon.cpp中初始化静态变量:

QFrame* SuperFalcon::fWigdet = nullptr;

答案 1 :(得分:1)

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

只需添加以下行:

SecondObject.rotation.copy(target.rotation);

到“ superfalcon.cpp”。