zoukankan      html  css  js  c++  java
  • 相同的操作QAction

    包装一个菜单类,用来构造菜单

    void menu::on_menu_clicked()
    {
        QAction *act = qobject_cast<QAction *>( this->sender() );
        if( act )
        {
            int index = act->property("menu_action_index").toInt();
            if( index >= 0 ) emit action_clicked( act, index );
        }
    }

    点击了菜单之后发送信号,在槽函数的地方,根据不同的index来识别处理

    QAction * menu::create_action( QMenu *menu, const menu_action *data )
    {
        QAction *act = data->m_icon.isEmpty() ? new QAction( data->m_text, menu ) : 
            new QAction( QPixmap( data->m_icon ), data->m_text, menu );
        menu->addAction(act);
        if( !data->m_short_key.isEmpty() )
        {
            act->setShortcut( data->m_short_key );
            act->setShortcutContext(Qt::WindowShortcut);
        }
        act->setToolTip( data->m_tip.isEmpty() ? u8"*" : data->m_tip );
        act->setProperty( "menu_action_index", data->m_index );
        connect( act, &QAction::triggered, this, &menu::on_menu_clicked );
        return act;
    }

    构造不同的菜单的通用函数

    m_menu_list.push_back( qlib::menu_action( 0, u8"第一级菜单1", QString(), Qt::ALT|Qt::Key_A, u8"第一级菜单1" ));
    m_menu_list.push_back( qlib::menu_action( 1, u8"第一级菜单2", QString(), Qt::ALT|Qt::Key_B ) );
    m_menu_list.push_back( qlib::menu_action() );
    m_menu_list.push_back( qlib::menu_action( 2, u8"第一级菜单3", QString(), Qt::ALT|Qt::Key_C, u8"第一级菜单3" ));
    m_menu_list.push_back( qlib::menu_action( 3, u8"第一级菜单4", QString(), QString(), u8"第一级菜单4" ));
    m_menu_list.push_back( qlib::menu_action( 4, u8"第一级菜单5", QString(), Qt::ALT|Qt::Key_E, u8"第一级菜单5" ));
    m_menu_list.push_back( qlib::menu_action());
    m_menu_list.push_back( qlib::menu_action( 5, u8"第一级菜单6", QString(), Qt::ALT|Qt::Key_F, u8"第一级菜单6" ));
    m_menu_list.push_back( qlib::menu_action());
    m_menu_list.push_back( qlib::menu_action( 6, u8"第一级菜单7", QString(), Qt::ALT|Qt::Key_G, u8"第一级菜单7" ));
    m_menu_list.push_back( qlib::menu_action());
    m_menu_list.push_back( qlib::menu_action( 7, u8"第一级菜单8", QString(), Qt::ALT|Qt::Key_H, u8"第一级菜单8" ));

    将m_menu_list传递给menu的构造函数.完成菜单的创建.

    【大学】深圳-tc 17:06:22
    QTableView的model/view用反射就可以解决支持任何结构体的model通用类
    
    【大学】深圳-tc 17:11:29
    qlib::item_model<item_data> *m1 = new qlib::item_model<item_data>( this, {} );
    qlib::item_model<item_data*> *m2 = new qlib::item_model<item_data*>( this, {} );
    qlib::item_model<std::tuple<QString>> *m3 = new qlib::item_model<std::tuple<QString>>( this, {} );

    啥意思没看懂



  • 相关阅读:
    web项目优化
    mysql 优化笔记
    Java 调用 google 翻译
    Git回滚merge操作
    mybatis 批量插入 返回主键id
    idea tomcat debug 失效
    mysql 常用语句
    xstream 解析xml报文
    activeMQ 讲解及实战
    linux svn apache
  • 原文地址:https://www.cnblogs.com/sggggr/p/13566378.html
Copyright © 2011-2022 走看看