2011-09-28 72 views
0

我有一种用QT编写的视频播放器应用程序,想法是,我可以点击视频帧,应用程序将从这个确切的像素获得坐标和颜色信息,到目前为止,这个应用程序已经很好用了,但事实是,我有一个控制面板希望有一个List Widget,我使用框架中的信息填充,为此我需要在这两者之间进行某种通信窗口小部件,我现在要做的就是用这个方法来找到主窗口:如何与另一个小部件共享共享小部件指针

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

有了这个,我有机会到主窗口小部件和主窗口将作为一个桥梁,可以访问到其他窗口的三分球,概率lem,我看到这种方法是我需要有一个获取方法,我需要访问每个小部件.. 另一种方法来做到这一点是在小部件中有一个设置方法,并使用父窗口小部件希望有权访问这两个小部件我正在寻找设置它的权利,这个问题是在这个方法在父窗口小部件希望没有任何关系与这两种方法.. 所以我要求的是什么最好的或更清洁的方法来做到这一点?有一些QT方式来做到这一点?谢谢! PS:只是要说清楚,我不是在谈论信号和时隙,我的想法是使用这些论文,但首先我需要一个指向我正在寻找的小部件的指针,然后连接到它的插槽!

回答

2

您正试图在较低级别的代码中执行此操作,这就是为什么它很尴尬。小部件都不具有其他的上下文。

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

+0

通过调用范围是什么意思? 你在说什么是在两个小部件中制作信号和插槽,并让我的主窗口小部件(希望能够访问所有小部件)进行连接? – Sassa

+0

@Sassa当然,谁知道所有小部件的人都有创建连接的上下文。你不应该遍历一个对象列表来找到任何东西。它不应该是一个搜索。 –

+0

明白了,所以我的主窗口将为小部件之间架起一座桥梁,所以小部件需要与另一个小部件进行交互的所有连接我在主窗口中声明,这是有道理的。非常感谢! – Sassa