从不同 class 引用 QWidget

Referencing QWidget from different class

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

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

我的问题是这样的。我有一个用 QtCreator 制作的 GUI。有 两个 listeners binding keyReleaseEvent,一个在 main class (SuperFalcon) 上,一个在 QTextEdit (这是单独的和修改的 class )。我有 QFrame,我想 toggle hide/show on "Ctrl + f"关键事件。由于那个QFrame(对象名称是findWidget)widget属于SuperFalcon->ui,所以没有问题,一切工作正常,当我尝试在 QTextEdit 中制作 "Ctrl + f" 时问题开始了,因为它是单独的事件侦听器。基本上我试过了。

main class 名字是 "SuperFalcon" 所以:

superfalcon.h 中,我制作了一个 public 静态指针,如下所示:

public:

    static QFrame *fWidget;

然后在superfalcon.cpp,我先执行

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

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

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

所以,为了让事情更简单,我不知道如何(如果可能的话)从另一个 class( QTextEdit class) 以便在 QFrame 上执行一些命令。

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

你必须初始化你的静态变量,在superfalcon.cpp:

QFrame* SuperFalcon::fWigdet = nullptr;

您必须定义任何静态成员变量。 由于单一定义规则,此定义必须在源文件中。

只需添加以下行:

QFrame* SuperFalcon::fWidget;

至"superfalcon.cpp"。