如何与其他小部件共享共享小部件指针

How to share share widgets pointers with another widgets

本文关键字:共享 小部 指针 其他      更新时间:2023-10-16

我有一种用QT编写的视频播放器应用程序,其想法是我可以点击视频帧,应用程序将从这个精确的像素中获得坐标和颜色信息,到目前为止,该应用程序已经正常工作,但问题是我有一个控制面板,希望有一个列表小工具,我用帧中的信息填充它,要做到这一点,我需要在这两个小部件之间进行某种通信,我现在要做的是使用这种方法来找到主窗口:

QWidget* mainwindow;
QWidgetList list = QApplication::topLevelWidgets();
for (int a = 0; a < list.size(); a++)
    if (list[a]->objectName() == "MainWindow")
    {
        mainwindow = list[a];
        break;
    }

通过这种方法,我可以访问主窗口小部件,主窗口将充当访问另一个小部件指针的桥梁,我看到这种方法的问题是,我需要对我需要访问的每个小部件都有一个get方法。。另一种方法是在小部件中有一个set方法,并使用父小部件。如果希望能够访问我正在寻找的两个小部件来设置它,那么问题是在父小部件中为此制定方法。希望与这两个方法无关。。所以我想问的是,最好或更干净的方法是什么?有什么QT方法可以做到这一点?谢谢

PS:需要明确的是,我不是在谈论信号和插槽,我的想法是使用这些,但首先我需要一个指向我要查找的小部件的指针,然后连接到它的插槽!

您正试图在较低级别的代码中实现这一点,这就是为什么它很尴尬。两个小部件都没有另一个的上下文。

只需在要通信的两个小部件上创建信号/插槽,然后在创建它们后让调用范围将它们连接起来。