我有一种用QT编写的视频播放器应用程序,其想法是可以单击视频帧,并且该应用程序将从该确切像素中获取坐标和颜色信息,到目前为止,该应用程序已经可以正常运行了,但是事情是,我有一个控制面板,希望有一个列表小部件,我用框架中的信息填充该信息,为此,我需要在这两个小部件之间进行某种通信,现在我要使用此方法来查找mainWindow:
QWidget* mainwindow;
QWidgetList list = QApplication::topLevelWidgets();
for (int a = 0; a < list.size(); a++)
if (list[a]->objectName() == "MainWindow")
{
mainwindow = list[a];
break;
}
这样我就可以访问mainwindow小部件,并且mainwindow将充当访问另一个小部件的指针的桥梁,我看到的这种方法的问题是我需要对需要访问的每个小部件都拥有一个get方法..
另一种方法是在小部件中有一个set方法并使用父小部件,希望可以访问我要查找的两个小部件以正确设置它,问题是在父小部件中为此方法创建了方法与这两种方法没有任何关系。
所以我要问的是什么是最好的或更清洁的方法?有一些QT方式可以做到吗?谢谢!
PS:明确一点,我不是在谈论信号和插槽,我的想法是使用这些,但是首先我需要一个指向我要寻找的小部件的指针,然后再连接到它的插槽!
最佳答案
您试图在较低级别的代码中执行此操作,因此这很尴尬。两个小部件都没有另一个上下文。
只需在要通信的两个小部件上创建信号/插槽,然后在创建它们之后使调用范围将它们连接起来。
关于c++ - 如何与其他小部件共享共享小部件指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7585050/