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, {} );

    啥意思没看懂



  • 相关阅读:
    在App_Data中创建数据库获取连接串简便方法!
    ObjectDataSource配合存储过程(采用数据集)的使用(删除可以解决,但是编辑出错好像它的方法也无法解决
    金鹰dreamweaver视频教程下载地址
    ASP.NET里创建Microsoft Word文档
    net3:Calendar控件的使用
    vs2005做的留言本——天轰川下载
    Wiley出版 SQL Server 2005宝典
    ADO:防止更新的数据含有单引号而出错
    用 Bitcron 搭博客:你只管写作,它负责呈现
    如何去掉Myeclipse对JS等文件的验证
  • 原文地址:https://www.cnblogs.com/sggggr/p/13566378.html
Copyright © 2011-2022 走看看