gpt4 book ai didi

multithreading - 如何从外部函数更新Gtk::TreeModel::Row

转载 作者:行者123 更新时间:2023-12-03 13:01:37 26 4
gpt4 key购买 nike

目前,我正在开发一个多线程应用程序。我使用TreeView来显示每个线程的状态,每个线程一行。
主要有两类:

  • 包含TreeView的主要GUI类
  • 类,用于处理线程

  • 将Gtk::TreeModel::iterator作为第二类的参数传递是不可行的,因为我们无法以row [m_Columns.m_id]之类的格式访问row中的元素。
    也不能使用Glib::Dispatcher,因为我们在外部函数中更改的元素是特定于线程的。

    那么,有没有可行的方法可以从外部功能更新GUI?

    最佳答案

    可以在外部文件中为Columns声明一个类,并将该文件包含在GUI类文件和线程类文件中。

    喜欢

    class Columns : public Gtk::TreeModel::ColumnRecord
    {
    public:
    Gtk::TreeModelColumn<unsigned int> m_id;
    Gtk::TreeModelColumn<Glib::ustring> m_pin;
    Gtk::TreeModelColumn<Glib::ustring> m_name;
    Gtk::TreeModelColumn<unsigned int> m_percentage;
    Gtk::TreeModelColumn<Glib::ustring> m_status;

    Columns()
    {
    add(m_id);
    add(m_pin);
    add(m_name);
    add(m_percentage);
    add(m_status);
    }
    };

    因此,如果您在GUI类中创建了Columns实例m_columns,并将其作为参数传递给线程类,则可以使用
    (*row)[m_columns.m_id]

    访问TreeModel中的元素。

    关于multithreading - 如何从外部函数更新Gtk::TreeModel::Row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1124709/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com