【问题标题】:How to share share widgets pointers with another widgets如何与其他小部件共享共享小部件指针
【发布时间】:2011-09-28 22:49:08
【问题描述】:

我有一种用 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;
    }

有了这个我可以访问主窗口小部件,主窗口将作为访问另一个小部件的指针的桥梁,我看到这种方法的问题是我需要对每个小部件都有一个 get 方法我需要访问.. 另一种方法是在小部件中有一个 set 方法并使用父小部件希望可以访问我正在寻找的两个小部件来正确设置它,问题是在父小部件希望中对此进行方法这两种方法没有任何关系.. 那么我要问的是最好或更清洁的方法是什么?有一些 QT 方式可以做到这一点吗?谢谢!

PS:为了清楚起见,我不是在谈论信号和插槽,我的想法是使用这些,但首先我需要一个指向我正在寻找的小部件的指针,然后连接到它的插槽!

【问题讨论】:

    标签: c++ qt pointers widget


    【解决方案1】:

    您正试图在较低级别的代码中执行此操作,这就是它很尴尬的原因。两个小部件都没有另一个小部件的上下文。

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

    【讨论】:

    • 调用范围是什么意思?你说的是在两个widget里面做信号和槽,让我的mainwindow widget(希望可以访问所有widget)做连接?
    • @Sassa 当然,知道所有小部件的人都有创建连接的上下文。不过,您不必遍历对象列表即可找到任何内容。这不应该是搜索。
    • 知道了,所以我的主窗口将在小部件之间架起一座桥梁,因此小部件需要与另一个小部件交互的所有连接我在主窗口中声明它,这是有道理的。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    相关资源
    最近更新 更多