从不同 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"。
如果这个问题重复,我很抱歉,但我真的很难找到任何答案。
请记住,我是 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"。